Jsf p:ajax未更新p:inputText

Jsf p:ajax未更新p:inputText,jsf,primefaces,Jsf,Primefaces,我无法使用根据在另一个中输入的值更新。我将JSF2与PrimeFaces5一起使用。第二个未更新,正在调用与关联的侦听器,我正在侦听器中获得正确的值,但它在视图中未更新 RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE") 查看代码为: <p:dialog id="newStdDlg" header="Add new Student" widgetVar="newStdDlg" modal="true"&

我无法使用
根据在另一个
中输入的值更新
。我将JSF2与PrimeFaces5一起使用。第二个
未更新,正在调用与
关联的侦听器,我正在侦听器中获得正确的值,但它在视图中未更新

RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE")
查看代码为:

<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>
RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE")

与注释中提到的Jaqen一样,注释在对话框中使用
h:form

RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE")
如果要从ManagedBean更新组件,可以使用
org.primefaces.RequestContext
update
方法

RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE")

如果您觉得此方法太内聚,您可以仅从Facelet更新,请确保不要将
p:dialog
放在
h:from
中,而是使用
h:form
inside
p:dialog

将h:form放在对话框中,并将对话框放在页面中其他表单的下方,这是一种很好的做法。你可以试试。否则,您是否有任何控制台错误(在浏览器中)?@JaqenH'ghar:非常感谢,它只是按照您在对话框中提到的方式工作,有自己的h:form。(Y)
RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE")