我是JSF的新手。当单击项目列表框时,我尝试使用FacesContext消息显示消息。在这种情况下,我试图在渲染列表框为空时显示一条消息。
我曾尝试在selectManyListbox中添加“update”属性,但它无效。
xhtml代码的一部分:
<h:outputLabel value="Category" />
<h:selectManyListbox id="x1CategorySelectOneMenu" value="#{x1.selectedCategories}" valueChangeListener="#{x1n.categoryChanged2}" required="true" requiredMessage="Category is required" size="10">
<f:selectItems value="#{x1.categories}" var="category" itemLabel="#{category}" itemValue="#{category}"/>
<f:ajax event="valueChange" render="x1SelectOneMenu"/>
<f:ajax event="valueChange" listener="#{x1.categoryChanged2}" render="msgs" execute="@this"/>
<!-- f:ajax render="msgs" / -->
</h:selectManyListbox>
<p:messages id="msgs" showDetail="true"/>
<h:outputLabel id="x1IdLabel" value="Machine" />
<h:selectManyListbox id="x1SelectOneMenu" immediate="true" value="#{x1.selectedResources}" required="true" requiredMessage="Machine is required" size="10" >
<f:selectItems value="#{x1.strResourceIdList}" var="machine" itemLabel="#{strResourceIdList}" itemValue="#{strResourceIdList}" />
</h:selectManyListbox>
Java代码的一部分:
public void categoryChanged2(ValueChangeEvent event) throws Throwable {
if(strResourceIdList.isEmpty())
{
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Info","There is no Resource available in this Category"));
return;
}
}
感谢任何帮助!
答案 0 :(得分:0)
经过长时间的反复试验,使其成功的部分是xhtml部分
<h:outputLabel value="Category" />
<h:selectManyListbox id="x1CategorySelectOneMenu" value="#{x1.selectedCategories}" valueChangeListener="#{x1.categoryChanged2}" required="true" requiredMessage="Category is required" size="10">
<f:selectItems value="#{x1.categories}" var="category" itemLabel="#{category}" itemValue="#{category}"/>
<f:ajax event="valueChange" render="x1SelectOneMenu msgs"/>
</h:selectManyListbox>
代码render="x1SelectOneMenu msgs"
是使其适用于我的案例的关键部分。 x1SelectOneMenu
是呈现{1}的ID,selectManyListbox
是msgs
ID的ID。 JSF的分隔符是空格。