p:ajax 使用全局 HTML ID 引用 <h:messages> 属性



我目前正在处理一个需要一些"重建"的项目,但仍然没有钱,所以我必须处理眼前的问题。我需要在radioButton的每一次更改上显示一条消息,如您在以下代码示例中所见:

<h:form>
    <h:messages id="msg"/>
    <p:accordionPanel value="#{exerciseBean.getCategoriesInGrade(5)}" var="category">
        <p:tab title="#{category.categoryName}">
            <h:panelGrid columns="1" cellpadding="5"> 
                <ui:repeat value="#{exerciseBean.getSingleChoiceInGrade(5, category.categoryName)}" var="exercise">
                     <div>#{exercise.getText()}</div>
                     <p:selectOneRadio value="#{exerciseBean.data}" > 
                         <f:selectItems value="#{exercise.getChoices()}" var="c" itemLabel="#{c.id}" itemValue="#{c.id}"  />  
                         <p:ajax event="change" process="@this" listener="#{exerciseBean.validateInput(exercise.getId())}" update="msg"/>
                      </p:selectOneRadio>  
                </ui:repeat>
            </h:panelGrid>
        </p:tab>
     </p:accordionPanel>  
</h:form>

正如您所看到的,在这个<h:form>内部直接有一个id为msg<h:messages>。现在的问题是:我仍然得到错误:"找不到标识符为'msg'的组件"。我现在尝试使用前缀:,但仍然存在相同的问题。有没有办法让PrimeFaces/JSF引用这个"全局id"?

在我的后台,我发送这样的消息:

FacesMessage facesMessage = new FacesMessage("Right Answer!");
FacesContext.getCurrentInstance().addMessage(null, facesMessage);

谢谢。

  1. 你的表格需要一个id
  2. 然后,您需要修改ajax更新属性中对msg的引用

因此,下面的代码更改应该为您完成。

1.<h:form id="formID" >

2.<p:ajax event="change" process="@this" listener="#{exerciseBean.validateInput(exercise.getId())}" update=":formID:msg"/>

相关内容

  • 没有找到相关文章

最新更新