0

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

どんな助けでも大歓迎です!

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 でselectManyListboxmsgsは ID のp:messagesID です。JSF のセパレーターはスペースです。

于 2013-09-04T01:50:10.863 に答える