我有一个Dialog来输入详细信息。第一次, InputText 为空。 但是从第二个输入, InputText 保持以前的值。
这是我的代码:
<p:commandButton id="showDialogButton1" type="button" value="add" onclick="dlg1.show()" update="firstname1"/>
<p:dialog id="dialogAjout" header="add department" widgetVar="dlg1" resizable="false">
<h:panelGrid columns="2" style="margin-bottom:10px">
<h:outputLabel for="firstname1" value="Libellé :" />
<p:inputText id="firstname1" value="#{departementBean.departement.libelleDepartement}" />
</h:panelGrid>
<p:commandButton id="submitButton1" value="Valider" oncomplete="dlg1.hide();" action="#{departementBean.addDept()}" update="tabView"/>
</p:dialog>
我该怎么解决这个问题,请!!
答案 0 :(得分:7)
您可以使用此primefaces组件:
http://www.primefaces.org/showcase/ui/misc/resetInput.xhtml
关于一般的对话:不要把它们放在表格中。
请改为:<p:dialog><h:form>...
关于update =“”值,如果你的appendToBody为true,在id前面放一个冒号(这意味着它是另一种形式)。
答案 1 :(得分:5)
您应该使用以下代码:
<h:commandButton value="Reset" style="margin-right:20px;">
<p:ajax update="registrationForm" resetValues="true" />
</h:commandButton>
答案 2 :(得分:4)
修改你这样打开的按钮:在oncomplete
中打开对话框,在此之前通过将其id添加到update
属性来更新它,并添加动作方法来执行服务器端逻辑以实际初始化对话框字段(填充/重置)
<p:commandButton action="#{departementBean.prepareDialog}" id="showDialogButton1" type="button" value="add" oncomplete="dlg1.show()" update=":dialogAjout"/>
顺便说一句,你的对话框与你的开启按钮一起位于你的表单内,这是一个“不好的做法”,将你的对话框移离该表单并在对话框中放置一个新表单,例如<p:dialog><h:form>
..
答案 3 :(得分:3)
将resetValues="true"
添加到commandButton
<p:commandButton resetValues="true" action="#{departementBean.prepareDialog}" id="showDialogButton1" type="button" value="add" oncomplete="dlg1.show()" update=":dialogAjout"/>
答案 4 :(得分:0)
我解决了这个问题
<p:dialog header="myDialog" widgetVar="dlg1" minHeight="40">
<h:outputLabel for="fild1" value="Fill the field" />
<p:password id="fild1" value="#{myBean.attribute}" required="false" label="Field" redisplay="false" /><br />
<p:commandButton action="#{myBean.method()}" value="Send" oncomplete="dlg1.hide()" update="field1" />
</p:dialog>
当我使用p:commandButton的属性更新=&#34; field1&#34; 时。 提交表单后,字段 p:密码的值将为空。
我尝试过做Dani的建议,但是当我提交表单时我的属性变空了,并且在提交后没有留空