我目前正在处理一个需要一些"重建"的项目,但仍然没有钱,所以我必须处理眼前的问题。我需要在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);
谢谢。
- 你的表格需要一个id
- 然后,您需要修改ajax更新属性中对
msg
的引用
因此,下面的代码更改应该为您完成。
1.<h:form id="formID" >
2.<p:ajax event="change" process="@this" listener="#{exerciseBean.validateInput(exercise.getId())}" update=":formID:msg"/>