【问题标题】:Determine the messages-widget to display validator message in JSF (Primefaces)确定消息小部件以在 JSF (Primefaces) 中显示验证器消息
【发布时间】:2014-05-28 01:07:32
【问题描述】:

在我的 JSF 页面中,我遇到了类似的情况:

<h:form>
    ...
    <p:messages id="messagedId" for="messagesWidget" autoUpdate="true" />
    <p:pickList validator="pickListValidator" ... />
    ...
</h:form>

“for”标签非常重要,不能删除,因为我使用这个标签来确定来自 backing bean 的目标消息小部件。

但是如何确定pickList 验证器消息应该显示在哪里(在本例中为“messagesWidget”)?


我可以使用

FacesContext context = FacesContext.getCurrentInstance();
FacesMessages msg = FacesMessage(FacesMessages.SEVERITY_ERROR, "short", "long");
context.addMessage("messagesWidget", msg);

在验证器内部并另外抛出 ValidatorException,但在我看来这不是最好的解决方案。


【问题讨论】:

    标签: java jsf-2 primefaces validation messages


    【解决方案1】:

    如果你使用内置验证器,你可以给 p:pickList 一个 id 并添加另一个 p:messages 组件,并将 "for" 属性设置为 pickList 的 id。然后此消息组件将仅显示pickList 的验证错误。

    【讨论】:

    • 但在这种情况下,我将有两个 p:messages 组件直接在另一个完成相同任务的后面。有没有可能两个结合这些 p:messages?
    • 然后可以通过指定for="pickListId messagesWidget"来组合。
    • 我试过这个,但似乎只允许一个组件。 Primefaces 用户指南说:“关联键的名称 [...]”(不是键...)
    • 好吧,如果 p:messages 只允许一个组件在 for 属性中,你必须有多个 p:messages。
    • 我很不高兴听到这个消息,但感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多