0

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

<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有效地返回一个非空名称。但是 FirstName 和 LastName 不会出现在对话框的 inputText 框中。

4

1 回答 1

2

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

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

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

于 2012-04-09T18:37:26.863 回答