Přechodná pole v objektech typu session-scoped bean nemohou úspěšně překonat selhání

Toto pravidlo značí pole s modifikátorem transient ve třídách, která jsou anotována s parametrem @SessionScoped. V implementaci CDI (Contexts and Dependency Injection) 1.0 OpenWebBeans může aplikace nastavit pole transient přímo v objektech typu session-scoped bean. V implementaci CDI 1.2 Weld nastavení pole transient nepovede po překonání selhání přímo k naplnění pole daty, což může způsobit neočekávané chování ve vaší aplikaci.

Ověřte, že každé pole transient, které je označeno tímto pravidlem, je nastaveno pouze pomocí metody poskytnuté obsahující třídou. Není-li pro toto pole nastavena žádná metoda set, přidejte metodu set a zavolejte ji namísto přímého nastavení pole.

V následujícím příkladu je třída UserBean anotována s @SessionScoped. Třída obsahuje také pole s modifikátorem transient, který je nastaven pomocí metody setter.


@Named(value="userBean")
@SessionScoped
public class UserBean implements UserInterface, Serializable 
{
	String name;
	transient String nickName;

	...

	public void setNickName(String nick)
	{
	    nickName = nick;
	}
}

Další informace o implementaci Java Platform, Enterprise Edition (Java EE) 7 CDI 1.2 viz Změny chování Contexts and Dependency Injection 1.2.