Java “PrimeFaces”对话框保留上一个值
我使用数据表来显示一些记录。用户可以使用名为actionsDialog的对话框添加/更改记录。保存记录之前,将显示一个称为reasonDialog的模式对话框,用户必须为当前操作输入一些原因。在我的逻辑中,我将数据保存到数据库后的原因设置为null 当我重复该操作时,问题出现了。原因包含上一个值。我已经调试了代码,并注意到发生这种情况的原因是分配了InputExtArea的本地值。我怎样才能去掉本地值?我使用的是PrimeFaces3.0、Mojara2.0.4和Tomcat7 我使用dialog facelet的原因是:Java “PrimeFaces”对话框保留上一个值,java,jsf,dialog,primefaces,Java,Jsf,Dialog,Primefaces,我使用数据表来显示一些记录。用户可以使用名为actionsDialog的对话框添加/更改记录。保存记录之前,将显示一个称为reasonDialog的模式对话框,用户必须为当前操作输入一些原因。在我的逻辑中,我将数据保存到数据库后的原因设置为null 当我重复该操作时,问题出现了。原因包含上一个值。我已经调试了代码,并注意到发生这种情况的原因是分配了InputExtArea的本地值。我怎样才能去掉本地值?我使用的是PrimeFaces3.0、Mojara2.0.4和Tomcat7 我使用dialo
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<p:dialog header="#{label.reason}" widgetVar="reasonDialog"
showEffect="fade" hideEffect="explode" modal="true" dynamic="true">
<h:panelGrid columns="2">
<p:inputTextarea rows="5" cols="40" autoResize="false"
value="#{recordsBean.reason}" maxLength="1024" />
<f:facet name="footer">
<p:outputPanel layout="block">
<p:commandButton value="ok" update="genericRecords msgs"
action="#{recordsBean.execute}"
oncomplete="reasonDialog.hide();actionsDialog.hide()" />
</p:outputPanel>
</f:facet>
</h:panelGrid>
</p:dialog>
</ui:composition>
“操作”对话框如下所示:
<p:dialog id="actionsDialog" widgetVar="actionsDialog" dynamic="true"
resizable="false" height="600" showEffect="fade" hideEffect="fade" modal="true">
<ui:include src="/WEB-INF/flows/genericRecord.xhtml"/>
<f:facet name="footer">
<p:outputPanel layout="block">
<p:commandButton value="save" onclick="reasonDialog.show()" />
<p:commandButton value="cancel" immediate="true"
oncomplete="actionsDialog.hide()" />
</p:outputPanel>
</f:facet>
</p:dialog>
尝试在p:commandButton中添加ajax=“false”属性;见样本
<p:commandButton value="ok" update="genericRecords msgs"
action="#{recordsBean.execute}" ajax="false"
oncomplete="reasonDialog.hide();actionsDialog.hide()" />
尝试在p:commandButton中添加ajax=“false”属性;见样本
<p:commandButton value="ok" update="genericRecords msgs"
action="#{recordsBean.execute}" ajax="false"
oncomplete="reasonDialog.hide();actionsDialog.hide()" />
在显示对话框之前,您需要更新/刷新对话框的内容。在
update
属性中引用其(相对)客户端ID,并将show()
从onclick
移动到oncomplete
,以便在更新后执行
否则,它当然会像关闭前一样显示旧内容。也就是说,通过ajax/JS与完全相同的页面交互,而不是与新页面交互。在显示对话框之前,需要更新/刷新对话框的内容。在
update
属性中引用其(相对)客户端ID,并将show()
从onclick
移动到oncomplete
,以便在更新后执行
否则,它当然会像关闭前一样显示旧内容。也就是说,通过ajax/JS与完全相同的页面交互,而不是与新页面交互。//如果没有任何效果,这是另一种解决方案: 没有什么对我有用…答案或评论。。因此,我必须做以下工作: 我使用
ResetInputs
重置对话框中的表单,并使用一种方法从bean中打开表单
所以
在对话框中,我有一些
,
,
和其他。当对话框关闭、提交后或出现错误时,他们都不再记得以前的值。
这是它对我唯一有效的方式,希望它对我有所帮助 //如果不起作用,这是另一种解决方案: 没有什么对我有用…答案或评论。。因此,我必须做以下工作: 我使用
ResetInputs
重置对话框中的表单,并使用一种方法从bean中打开表单
所以
在对话框中,我有一些
,
,
和其他。当对话框关闭、提交后或出现错误时,他们都不再记得以前的值。
这是它对我唯一有效的方式,希望它对我有所帮助 尝试将id分配给对话框
id=“reasonDialogID”
adn在打开对话框的按钮的update
属性中添加id。我已将id=“reasonDialogID”添加到对话框,并将其设置为按钮的update属性,但它仍然不起作用。除此之外,原因值设置不正确,它总是空的。您不是在那个按钮单击中调用了一些bean方法吗?将数据设置为记录bean
?recordsBean
的作用域是什么?至少将其设置为视图作用域…单击按钮时,将调用recordsBean的execute方法。recordsBean是会话范围。确保打开reasonDialog
对话框以完成该按钮的单击?张贴打开对话框的按钮的代码…尝试为对话框分配idid=“reasonDialogID”
adn在打开对话框的按钮的update
属性中添加id。我已将id=“reasonDialogID”添加到对话框中,并将其设置为按钮的update属性,但它仍然不起作用。除此之外,原因值设置不正确,它总是空的。您不是在那个按钮单击中调用了一些bean方法吗?将数据设置为记录bean
?recordsBean
的作用域是什么?至少将其设置为视图作用域…单击按钮时,将调用recordsBean的execute方法。recordsBean是会话范围。确保打开reasonDialog
对话框以完成该按钮的单击?发布打开对话框的按钮的代码…我试过了,但没有成功。我也有同样的问题,但在一个之前有错误的对话框中。我想这就像你的文章所说的。这仍然是Prime 5.3中的一个问题?找到了。在Primefaces中,您可以使用RequestContext.getCurrentInstance().reset(“您的表单id”);要重置表单值,或使用p中的resetValues=“true”:commandButton@TiagoPC我也有同样的问题,但是你的解决方案对我不起作用,你知道为什么吗?试着使用org.omnifaces.eventlistener.ResetInputAjaxActionListener阶段Listener我试过了,但不起作用。我也有同样的问题,但是在一个有先前错误的对话框中。我想这就像你的文章所说的。这仍然是Prime 5.3中的一个问题?找到了。在Primefaces中,您可以使用RequestContext.getCurrentInstance().reset(“您的表单id”);要重置表单值,或使用p中的resetValues=“true”:commandButton@TiagoPC我也有同样的问题,但你的解决方案对我不起作用,你知道为什么吗?试着使用org.omnifaces.eventlistener.ResetInputAjaxActionListener阶段Listener然后最好创建一个新问题,试图找出为什么它对你不起作用,但对许多其他人起作用。现在还不清楚为什么您的解决方案应该是
public void showDialog(){
car = new Car();
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('wvDialog').show();");
//added widgetVar to myDialog called wvDialog
}