【问题标题】:Primefaces messages "for" argument not working with bean validationPrimefaces 消息“for”参数不适用于 bean 验证
【发布时间】:2012-11-05 20:38:33
【问题描述】:

我有一个 bean 验证根据:

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

在我的 facelet 中,我有:

<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="kilometres" 选项时,不会显示任何验证消息。我错过了什么还是一个错误?

最好的问候

【问题讨论】:

  • 您使用的是什么版本的 primefaces?
  • 你的backing bean是什么范围?
  • &lt;p:message/&gt; 工作了吗?您仍然无法显示单独的验证消息吗?
  • 感谢您的支持。我运行 Mojarra 2.1.6 和 PrimeFaces 3.4.1。 p:message for="kilometres" 有效,但 p:messages for="kilometres" 无效,并且只有 1 个字段。很奇怪。最后使用 p:growl,这就像一个魅力。编辑:我正在使用 SessionScoped 范围
  • 我用一个使用组件特定p:messages 的示例更新了我的答案。我想这就是你真正想要的。

标签: jsf primefaces bean-validation


【解决方案1】:

使用&lt;p:message/&gt; 组件分别显示每个输入组件的验证消息:

<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"));

【讨论】:

  • 你好 akoskm!谢谢你的支持!这行得通,但这迫使我在模型或模型中的每个字段周围实现一个包装器。目前,我的“bean”中只有“车辆”作为字段。 => 私家车; + setter 和 getter。而已。你怎么解决这个问题?再次感谢 =)
  • 如果这对原始问题有效,我建议您将此帖子标记为答案。您还应该针对您当前的问题提出一个新问题,并且应该在那里继续讨论。
  • 我应该说明确创建新的 FacesMessage 没有任何问题,我想做的是只使用一个 facelet 页面和一个带有 bean 验证注释的字段的 bean。没有其他的。无论如何谢谢=)
  • @kungcc 您绝对可以进行简单的验证并仅使用注释提供自定义消息,例如@NotNull(message = "This value may not be null")。见Package javax.validation.constraints
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 2019-05-22
  • 2013-11-07
  • 1970-01-01
  • 2011-11-01
  • 2019-02-20
  • 2014-06-20
相关资源
最近更新 更多