0
我使用<p:ajax>
根據在另一個<p:inputText>
中輸入的值,我無法更新<p:inputText>
。我正在使用PrimeFaces 5的JSF 2.第二個<p:inputText>
未更新,與<p:ajax>
關聯的偵聽器正在被調用,並且我正在偵聽器中獲取正確的值,但未在視圖中更新它。p:ajax沒有更新p:inputText
視圖代碼是:
<p:dialog id="newStdDlg" header="Add new Student" widgetVar="newStdDlg" modal="true">
<h:panelGrid id="newStdDlgPanel" columns="2" cellpadding="5" style="width:100%;">
<p:outputLabel value="First Name *" />
<p:inputText id="studentfname" value="#{addStudentBean.student.firstName}">
<p:ajax event="change" update="studentUsrname" listener="#{addStudentBean.firstNameChange}" />
</p:inputText>
<p:outputLabel value="Last Name *" />
<p:inputText value="#{addStudentBean.student.lastName}"/>
<p:outputLabel value="Father's Name *" />
<p:inputText value="#{addStudentBean.student.fatherName}"/>
<p:outputLabel id="uLbl" value="Username (System Generated) *" />
<p:inputText id="studentUsrname" value="#{addStudentBean.student.user.username}" />
<p:outputLabel value="This temporary password would be mailed to user: " />
<p:outputLabel id="stdpassword" value="#{addStudentBean.student.user.password}"/>
</h:panelGrid>
<p:commandButton value="Create Student"
actionListener="#{addStudentBean.addNewStudentAction}"
style="margin-left:auto;margin-right:auto;display:block;"/>
</p:dialog>
和會議的聽衆範圍的管理bean是:
public void firstNameChange() {
System.out.println("In AddStudentBean().firstNameChange()..........");
System.out.println("The value of student.getFirstName: "+student.getFirstName());
System.out.println("updating system generated username as: "+student.getFirstName()+String.valueOf(new UserDAO().getUserCount()+1));
student.getUser().setUsername(student.getFirstName()+String.valueOf(new UserDAO().getUserCount()+1));
student.getUser().setPassword(KaaloUtils.getPassword());
}
在對話框中使用h:表單並將對話框放置在頁面中的其他表單下方是一種很好的做法。你可以試試它。否則,你有任何控制檯錯誤(在瀏覽器中)? – 2014-11-21 06:32:39
@ JaqenH'ghar:非常感謝你,它的工作方式與你在對話中提到的擁有自己的h:形式的方式一致。 (Y) – Hassan 2014-11-21 06:42:45