A munkamenet hatókörű komponensekben az átmeneti mezők átállása sikertelen

Ez a szabály megjelöli a transient módosítóval rendelkező mezőket a @SessionScoped annotációval ellátott osztályokban. A Contexts and Dependency Injection (CDI) 1.0 OpenWebBeans megvalósításban egy alkalmazás beállíthat transient mezőket közvetlenül a munkamenet hatókörű komponensekhez. A CDI 1.2 Weld megvalósításban a transient mező közvetlen beállítása nem eredményezi a mező feltöltését egy átállás után, ami váratlan viselkedést okozhat az alkalmazásban.

Ellenőrizze, hogy a szabály által megjelölt minden transient mező csak egy, a tartalmazó osztály által adott módszer használatával van beállítva. Ha a mezőhöz nem található beállító módszer, akkor adjon hozzá egy set módszert, és hívja meg azt a mező közvetlen beállítása helyett.

a következő példában a UserBean osztálynak van egy @SessionScoped annotációja. Az osztály tartalmaz egy olyan transient módosítóval rendelkező mezőt is, amely egy beállító módszer használatával van beállítva.


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

	...

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

A Java Platform, Enterprise Edition (Java EE) 7 CDI 1.2 megvalósítással kapcsolatos további információkért tekintse meg a következőt: Contexts and Dependency Injection 1.2 viselkedésváltozásai.