JSF2(MyFaces 2.1)とCDI(Weld)を使用して、列挙型で満たされたselectOneMenuを使用して、2番目のselectOneMenu(コード内のダブルメニュー)を条件付きでレンダリングします。Bean Validationを使用して検証されるフォームには、他にもいくつかのフィールドがあります。
問題:
commandButtonをクリックした後に検証エラーが発生し、エラーメッセージが表示された場合、ダブルメニューは再表示されません。bean.type =='double'は正しくないようです。しかし、なぜ?selectOneMenu自体は、選択された項目としてオプションdoubleを表示します。
@javax.inject.Named
@javax.enterprise.context.RequestScoped
public class Bean {
private enum MyEnum {
Single, Double
}
private MyEnum type;
public MyEnum getType() {
return type;
}
public void setType(MyEnum type) {
this.type = type;
}
public MyEnum [] getTypes() {
return MyEnum.values();
}
<h:form>
<h:selectOneMenu value="#{bean.type}">
<f:selectItems value="#{bean.types}" />
<f:ajax render="doublemenu" />
</h:selectOneMenu>
<h:panelGroup id="doublemenu">
<h:panelGroup rendered="#{bean.type == 'double'}">
<h:selectOneMenu ...>
</h:selectOneMenu>
</h:panelGroup>
</h:panelGroup>
<h:inputText id="VALIDATED"/>
<h:commandButtonaction="#{bean.save}"
</h:form>
ところで:bean.saveは実行されません