1
我不明白爲什麼這個簡單的東西不會工作。我可以看到,我設置的構造函數是每次調用一個屬性設置的。問題是當我到達sendInvitation方法時,所有的inviteEmails都是null。Jsf屬性沒有保存
@Named(value = "adminBean")
@RequestScoped
public class AdminBean implements Serializable {
private String inviteEmail1;
private String inviteEmail2;
private String inviteEmail3;
private BasicUser administrator;
@EJB
private MessageBeanRemote messageBean3;
/** Creates a new instance of AdminBean */
public AdminBean() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().
getExternalContext().getSession(true);
LoginBean loginBean = (LoginBean) session.getAttribute("loginBean");
administrator = loginBean.getUser();
}
public String getInviteEmail1() {
return inviteEmail1;
}
public void setInviteEmail1(String inviteEmail) {
this.inviteEmail1 = inviteEmail;
}
public String getInviteEmail2() {
return inviteEmail2;
}
public void setInviteEmail2(String inviteEmail) {
this.inviteEmail2 = inviteEmail;
}
public String getInviteEmail3() {
return inviteEmail3;
}
public void setInviteEmail3(String inviteEmail) {
this.inviteEmail3 = inviteEmail;
}
public void sendInvitations() {
...
}
}
這是使用這個bean的頁面是一個組件是另一個頁面的一部分:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:component id="adminComp">
<h3>Adminstration page</h3>
<h:form id="inviteForm">
<h:panelGrid columns="1">
Invite new members to your group. Type in their emails in the fields below.
<h:inputText id="email1" value="#{adminBean.inviteEmail1}" size="40"/>
<h:inputText id="email2" value="#{adminBean.inviteEmail2}" size="40"/>
<h:inputText id="email3" value="#{adminBean.inviteEmail3}" size="40"/>
<h:commandButton value="invite" action="#{adminBean.sendInvitations}"/>
</h:panelGrid>
</h:form>
</ui:component>
</html>
的adminBean實際上是初始化多次,它看起來有點奇怪。 「構造函數」是adminBean的構造函數,「Get 1」是getInviteEmail1等等。
INFO: START PHASE RESTORE_VIEW 1
INFO: END PHASE RESTORE_VIEW 1
INFO: START PHASE APPLY_REQUEST_VALUES 2
INFO: END PHASE APPLY_REQUEST_VALUES 2
INFO: START PHASE PROCESS_VALIDATIONS 3
INFO: Constructor
INFO: Constructor
INFO: Constructor
INFO: Constructor
INFO: Constructor
INFO: Constructor
INFO: Get 2
INFO: Constructor
INFO: Constructor
INFO: Constructor
INFO: Get 3
INFO: END PHASE PROCESS_VALIDATIONS 3
INFO: START PHASE UPDATE_MODEL_VALUES 4
INFO: Constructor
INFO: Set 1
INFO: Constructor
INFO: Set 2
INFO: Constructor
INFO: Set 3
INFO: END PHASE UPDATE_MODEL_VALUES 4
INFO: START PHASE INVOKE_APPLICATION 5
INFO: Constructor
SEVERE: NullPointerException....
INFO: END PHASE INVOKE_APPLICATION 5
INFO: START PHASE RENDER_RESPONSE 6
INFO: Constructor
INFO: Constructor
INFO: Get 2
INFO: Constructor
INFO: Get 3
INFO: END PHASE RENDER_RESPONSE 6
任何幫助appriciated。
這是因爲我的NetBeans將自動做出@Named當我做我的新ManagedBean。我只是忽略那些東西:) – AnAmuser 2010-10-16 19:05:17