我无法显示带有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" />
让我知道它是否有效,问题可能出在其他地方,但这是最常见的事情。希望它有帮助!