私は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;
}
}
どんな助けでも大歓迎です!