使用 JSF2 (MyFaces 2.1) 和 CDI (Weld) 我使用一个填充了枚举的 selectOneMenu 来有条件地呈现第二个 selectOneMenu(代码中的doublemenu)。表单中还有其他几个字段使用 bean 验证进行验证。
问题:
如果单击命令按钮后出现验证错误并显示错误消息,则不会再次出现双菜单。似乎bean.type =='double'不正确。但为什么?selectOneMenu 本身将选项双重显示为所选项目。
@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未执行