Primefaces消息“for”参数不使用bean验证

时间:2012-11-05 20:38:34

标签: jsf primefaces bean-validation

我根据以下内容进行了bean验证:

@Min(value = 0)
@Max(value = 1000000)    
private int kilometres;

在我的脸上,我有:

<p:messages autoUpdate="true" showDetail="true" showSummary="true" />

<p:outputLabel for="kilometres" value="Kilometres" />
<p:inputText id="kilometres" value="#{bean.vehicle.kilometres}">
     <p:ajax event="change" />
</p:inputText>

当我拥有它时它工作正常,除了将显示所有字段ID的所有消息。我想为每个字段指定,如下所示:

<p:messages for="kilometres" autoUpdate="true" showDetail="true" showSummary="true" />

但是,当我添加for =“km”选项时,则不会显示验证消息。我错过了什么或者它是一个错误吗?

祝你好运

1 个答案:

答案 0 :(得分:4)

使用<p:message/>组件分别显示每个输入组件的验证消息:

<p:outputLabel for="kilometres" value="Kilometres" />
<p:inputText id="kilometres" value="#{bean.vehicle.kilometres}">
    <p:ajax/>
</p:inputText>
<p:message for="kilometres"/>

展示:AJAX - Validations

<强>更新

为了显示给定组件的多条消息(p:messages),您需要在for="kilometres"和支持bean中指定相关的组件ID:

FacesContext context = FacesContext.getCurrentInstance();

context.addMessage("kilometres", new FacesMessage("Message 1"));
context.addMessage("kilometres", new FacesMessage("Message 2"));