如何更新与 <p:commandButton ajax="false"> 关联的消息组件?

How to update message components associated with <p:commandButton ajax="false">?

我需要你的助手在单击非 ajax <p:commandButton> 后更新 JSF 页面中的 <p:message> 组件。目前在这种情况下,我需要验证员工编号是否为空,然后在消息组件中显示错误消息,否则,不显示任何内容。但是现在,单击 <p:commandButton> 后,表单不会显示任何内容。

下面是 JSF 代码:

<h:form id="form">
    <p:inputText value="#{pdf.refNo}"/>

    <p:message id="message" for=":form:cmd2" showDetail="true"/>

    <p:commandButton id="cmd2"
                     value="Validate"
                     ajax="false"
                     actionListener="#{pdf.validate}"/>

</h:form>

Java bean 是:

public void validate() {
    if (refNo.equals("") || refNo == null) {
        FacesContext.getCurrentInstance().addMessage(":form:cmd2", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error!", "Please enter the Employee No."));
    }
}

那么上面的代码是否正确,点击按钮后如何显示消息?

问题已通过使用 for 指定目标组件得到解决。所以在上面的例子中,我提到了命令按钮,所以我们点击它,应该更新一个特定的消息组件。这可以通过以下方式完成:

<p:message id="message" for="cmd2" showDetail="true"/>

<p:message id="message" for="form:cmd2" showDetail="true"/>