階段作業範圍 Bean 中的 Transient 欄位無法順利地失效接手

此規則會標示在以 @SessionScoped 標註的類別內具有 transient 修飾元的欄位。在 Contexts and Dependency Injection (CDI) 1.0 OpenWebBeans 實作中,應用程式可以在階段作業範圍 Bean 中直接設定 transient 欄位。在 CDI 1.2 Weld 實作中,直接設定 transient 欄位並不會導致失效接手之後在此欄位中移入資料,從而可能導致應用程式中發生非預期的行為。

請確認僅使用所含類別提供的方法,來設定此規則所標示的每個 transient 欄位。如果此欄位沒有設定方法,請新增並呼叫設定方法,而不要直接設定此欄位。

在下列範例中,將以 @SessionScoped 標註 UserBean 類別。此類別還包含一個欄位,其中具有使用 setter 方法設定的 transient 修飾元。

 @Named(值 = "userBean")
@SessionScoped public class UserBean implements UserInterface, Serializable {
	字串名稱; 暫時性字串 nickName;

	。。。

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

如需 Java Platform Enterprise Edition (Java EE) 7 CDI 1.2 實作的相關資訊,請參閱 Contexts and Dependency Injection 1.2 行為變更