预填充的 p:inputText 组件



我无法显示带有p:inputText组件预填充值的p:dialog

<p:dialog modal="true" widgetVar="editPersonDlg" header="Edit Person" width="350">
    <h:form id="editPersonForm">
        <h:panelGrid columns="2">
            <h:outputLabel for="editFirstName" value="First Name:" />
            <p:inputText id="editFirstName" value="#{personBean.selectedPerson.firstName}" />
            <p:commandButton value="Save" type="Button" actionListener="#{personBean.edit}" 
                                 oncomplete="editPersonDlg.hide()"/>
            <p:commandButton value="Cancel" type="Button" oncomplete="editPersonDlg.hide()"/>
        </h:panelGrid>
    </h:form>
</p:dialog>

调试时,我看到personBean#selectedPerson有效地返回了一个非空人,具有非空名称。 Person#getFirstName有效地返回一个非空名称。但是,"名字"和"姓氏"不会出现在对话框的输入文本框中。

这可能是因为您在打开对话框之前没有更新对话框。例如:您可以通过在p:dataTable中选择personBean.selectedPerson来初始化它,然后通过单击打开"编辑"对话框的p:commandButton来编辑它。您必须更新此对话框,以便组件可以获取实际数据。尝试对打开对话框的按钮进行如下操作:

<p:commandButton value="Edit" oncolmplete="editPersonDlg.show()" update=":formInWhichIsDialog:dialogID" />

让我知道它是否有效,问题可能出在其他地方,但这是最常见的事情。希望它有帮助!

最新更新