Java 确定messages小部件以在JSF(Primefaces)中显示验证器消息

Java 确定messages小部件以在JSF(Primefaces)中显示验证器消息,java,jsf-2,primefaces,validation,messages,Java,Jsf 2,Primefaces,Validation,Messages,在我的JSF页面中,我遇到了类似的情况: <h:form> ... <p:messages id="messagedId" for="messagesWidget" autoUpdate="true" /> <p:pickList validator="pickListValidator" ... /> ... </h:form> 在验证器内部,另外抛出一个验证器异常,但在我看来这不是最好的解决方案 如果您使用内置

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

<h:form>
    ...
    <p:messages id="messagedId" for="messagesWidget" autoUpdate="true" />
    <p:pickList validator="pickListValidator" ... />
    ...
</h:form>
在验证器内部,另外抛出一个验证器异常,但在我看来这不是最好的解决方案



如果您使用内置验证器,您可以为p:pickList提供一个id,并添加另一个p:messages组件,该组件的id设置为“for”。然后,此消息组件将仅显示pickList的验证错误。

但在这种情况下,我会在另一个组件后面直接有两个p:messages组件来完成相同的任务。是否存在两个组合这些p:messages的可能性?然后您可以通过指定for=“pickListId messagesWidget”进行组合。我尝试了这个方法,但似乎只允许一个组件。Primefaces用户指南上说:“关联键的名称[…](不是键…)如果p:messages只允许属性中的一个组件,那么您必须有多个p:messages。听到这个消息我很不高兴,但感谢您的帮助!
FacesContext context = FacesContext.getCurrentInstance();
FacesMessages msg = FacesMessage(FacesMessages.SEVERITY_ERROR, "short", "long");
context.addMessage("messagesWidget", msg);