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

我在JBoss AS 7.1上使用JSF和PrimeFaces 3.2

问题是:我无法将验证结果(不是常规的JSF验证!)从后端传递到前端

我有一个绑定到实体的表单,当单击“保存”按钮时,我想对实体进行一些验证:

<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 ...
}