预填充p:inputText组件

时间:2012-04-09 16:21:57

标签: jsf primefaces

我无法显示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,其名称为非null。 Person#getFirstName实际上返回了一个非空名称。但是,FirstName和LastName不会出现在Dialog的inputText框中。

1 个答案:

答案 0 :(得分:2)

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

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

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