Câmpurile Transient în bean-urile session-scoped nu pot fi preluate la defect cu succes

Această regulă semnalează câmpurile cu modificatorul transient în clasele care sunt adnotate cu @SessionScoped. În implementarea CDI (Contexts and Dependency Injection) 1.0 OpenWebBeans, o aplicaţie poate seta câmpurile transient direct pe bean-urile session-scoped. În implementarea CDI 1.2 Weld, setarea câmpului transient direct nu are ca rezultat popularea câmpului după preluarea la defect, ceea ce poate cauza un comportament neaşteptat în aplicaţia dumneavoastră.

Verificaţi că fiecare câmp transient care este semnalat de această regulă este setat numai folosind o metodă furnizată de clasa care-l conţine. Dacă nu există nici o metodă set pentru câmp, adăugaţi o metodă set şi apelaţi-o în loc de setarea câmpului direct.

În următorul exemplu, clasa UserBean este adnotată cu @SessionScoped. Clasa de asemenea conţine un câmp cu un modificator de tranziţie care este setat folosind o metodă setter.


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

	...

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

Pentru informaţii suplimentare despre implementarea Java Platform, Enterprise Edition (Java EE) 7 CDI 1.2, vedeţi Contexts and Dependency Injection 1.2 behavior changes.