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

时间:2015-08-14 12:18:09

标签: ajax jsf jsf-2 primefaces commandbutton

点击非ajax <p:message>后,我需要您的助手更新JSF页面中的<p:commandButton>组件。目前在这种情况下,我需要验证员工编号是否为空,然后在消息组件中显示错误消息,否则,不显示任何内容。但是现在,单击<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."));
    }
}

上面的代码是否正确以及如何在单击按钮后显示消息?

1 个答案:

答案 0 :(得分:1)

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

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

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