據this article,我實現了@ManagedProperty(value="#{settings}")
到我的支持bean:@ManagedProperty - 設置getter和setter
BEAN Bde.java:
@Entity
@Table(name="bdeDATA")
@ViewScoped
@ManagedBean(name="BDE")
public class Bde implements Serializable
{
/**/
private static final long serialVersionUID = -705775502999920673L;
@Transient
@ManagedProperty(value = "#{settings}")
private Settings settings;
@Id
private Date create_date;
private Integer person_ID;
public Date getCreate_date() {
return create_date;
}
public void setCreate_date(Date create_date) {
this.create_date = create_date;
}
public Integer getPerson_ID() {
return person_ID;
}
public void setPerson_ID(Integer person_ID) {
this.person_ID = person_ID;
try
{
Settings.PWKITEM = (Pwk)Tools.find(person_ID);
if (Settings.PWKITEM != null) settings.setUserfound(true); /// PROBLEMATIC
}
catch (Exception e)
{
Tools.setErrorMessage("NOT FOUND "+e.getMessage());
}
}
// ManagedProperty settings ---------------------------------------------
public Settings getSettings() {
return settings;
}
public void setSettings(Settings settings) {
this.settings = settings;
}
public void setUserfound (boolean userfound){
settings.setUserfound(userfound);
}
public boolean isUserfound() {
return settings.isUserfound();
}
}
Settings.java:
@SessionScoped
@ManagedBean(name="settings")
public class Settings implements Serializable
{
/**/
private static final long serialVersionUID = 8613411699115714416L;
public static Pwk PWKITEM = new Pwk();
private boolean userfound = false;
public boolean isUserfound() {
return userfound;
}
public void setUserfound(boolean userfound) {
this.userfound = userfound;
}
}
XHTML(AJAX調用setPerson_ID):
<h:inputText id="persId" value="#{bean.bdeitem.persId}">
<f:ajax event="blur" render="name" execute="@this" />
</h:inputText>
<h:inputText id="name" value="#{bean.pwkitem.name}"/>
問題是在try/catch
:
- 沒有條件,找到對象。
- 當我將條件例如更改爲
if (Settings.PWKITEM != null) System.out.println("HELLO")
時,HELLO
被寫入控制檯。 - 如果我嘗試添加
userfound
setter,它會被捕獲(「未找到」)。
我在做什麼錯了?
我覺得這很可怕。會話scoped bean中的靜態屬性?這不應該是在應用程序範圍的bean?你瞭解應用程序/會話/查看/請求範圍的生命週期嗎?你明白'靜態'的含義嗎? – BalusC 2011-05-30 11:36:05
我以爲我會這樣做,但現在我明白了,我並沒有把它說得很好。如果我必須及時完成我的單身工作,並且我在java中處女,那會發生這種情況:) – gaffcz 2011-05-30 11:42:23
我很想發表一個答案,但是對於功能要求我還不完全清楚。這些設置是用戶特定的還是應用程序特定的? 'userfound'應該代表什麼?是否有人登錄?這是誰的信息?用戶本身?或者每個人訪問webapp? 「PWKITEM」代表什麼? – BalusC 2011-05-30 11:45:27