1

我知道这个话题已经讨论了很多,但是所有的解决方案都指向创建一个重置按钮......有没有办法只清除字段并重新填充它们?

这是我的代码

<p:commandButton id="basic" value="#{c.machine}" action="#{updateEntry.setMachine(c.machine)}" oncomplete="dlg1.show();" styleClass="ui-Machinebutton"/>

这会在 'updateEntry' 中设置值 'machine' 并在完成后启动对话框 'dlg1'

对话框

<p:dialog id="Update_Entry" header="Update Entry" widgetVar="dlg1" modal="true" height="250" dynamic="True" resizable="False">  
                    <h:form prependId="false" id="Update_Entry_Form" method="post" autocomplete="off">  

                            <h:panelGrid id="update_grid" columns="2" style="margin-bottom:10px"> 

                                <f:facet name="header">  
                                    <p:messages />  
                                </f:facet> 
                                <h:outputLabel for="machine" value="Machine *" />  
                                <p:inputText id="machine" value="#{updateEntry.machine}" required="true" requiredMessage="Machine is required">
                                    <f:validateLength minimum="5" maximum="5"/>
                                </p:inputText>

表单第一次加载值很好,但即使 updateEntry.machine 更新,它也总是加载以前的值。我如何自动清除它?我正在使用 PrimeFaces

4

1 回答 1

1

您忘记在打开之前对对话框的内容进行 ajax 更新。这就是为什么它总是显示初始内容,就像第一次呈现页面或最后一次关闭对话框时一样。

相应地这样做:

<p:commandButton ... update=":Update_Entry">
于 2013-07-30T16:29:09.163 回答