Jsf 出现错误时显示对话框
我在JBoss AS 7.1上使用JSF和PrimeFaces 3.2 问题是:我无法将验证结果(不是常规的JSF验证!)从后端传递到前端 我有一个绑定到实体的表单,当单击“保存”按钮时,我想对实体进行一些验证:Jsf 出现错误时显示对话框,jsf,primefaces,Jsf,Primefaces,我在JBoss AS 7.1上使用JSF和PrimeFaces 3.2 问题是:我无法将验证结果(不是常规的JSF验证!)从后端传递到前端 我有一个绑定到实体的表单,当单击“保存”按钮时,我想对实体进行一些验证: <p:growl id=saveSuccessDialog" /> <p:dialog widgetVar="verificationDialog" modal="true" header="#{msg['dialog.title.verificationE
<p:growl id=saveSuccessDialog" />
<p:dialog widgetVar="verificationDialog" modal="true"
header="#{msg['dialog.title.verificationError']}" resizable="false">
<h:form id="verificationErrorForm">
<h:outputText value="#{verificationResult.problemDescription}" />
</h:form>
</p:dialog>
<h:form>
...some fields...
<p:commandButton
actionListener="#{adminBean.saveObject}"
value="Save" icon="ui-icon-check"
onerror="verificationDialog.show();"
update=":verificationErrorForm :saveSuccessDialog" />
</h:form>
以及验证结果:
@Named
@ConversationScoped
public class VerificationResult implements Serializable {
private String problemDescription; // with get/set
... some more information about the problem here ...
}
我希望,其意图是明确的:当用户单击“保存”时,验证将运行(有效),如果验证失败,将弹出一个包含附加信息的对话框。如果验证成功,则会出现“保存成功”的咆哮声。这也行得通
但是如果显示verificationError对话框,则尽管设置了verificationResult.problemDescription
,但该对话框为空
因此,有两个问题:
a) 我怎样才能解决这个问题?
b) 是否有更好的解决方案来处理此类需求
我希望这个问题是可以理解的。提前谢谢 再搜索几个小时后,我终于在PrimeFaces论坛上找到了一个解决方案: 基本思想是将评估(无论对话框是否应显示)安排到对话框本身的
可见
-属性,然后让对话框在commandButton/链接的更新
-属性中更新
感谢BalusC在另一个论坛上提出了这个问题:-)如果在对话框外显示结果文本(例如,以与commandButton相同的形式),是否会显示结果文本?不,不是。如果我将
放在
的后面,它总是空的。如果ajax请求失败,似乎VerificationResult对象不会被放入当前页面的上下文中。如果我再次单击同一页,将显示正确的问题描述。我想我必须以某种方式用当前bean及其状态更新页面,但是我该怎么做呢?
@Named
@ConversationScoped
public class VerificationResult implements Serializable {
private String problemDescription; // with get/set
... some more information about the problem here ...
}