0

我是 JSF 的新手。当单击项目列表框时,我尝试使用 FacesContext 消息显示消息。在这种情况下,我试图在呈现的列表框为空时显示一条消息。

我试图将“更新”属性放在 selectManyListbox 中,但它不起作用。

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;
     }
  }

任何帮助表示赞赏!

4

1 回答 1

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是渲染的 ID,是selectManyListboxidmsgsp:messagesID。JSF 的分隔符是空格。

于 2013-09-04T01:50:10.863 回答