如何使用selectManyListBox显示FacesContext消息

时间:2013-09-04 01:30:22

标签: java jsf

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

感谢任何帮助!

1 个答案:

答案 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,selectManyListboxmsgs ID的ID。 JSF的分隔符是空格。