我需要在selectItem列表中基于辅助bean禁用几个项目。以下是代码段
<h:selectOneMenu required="#{bean.tbiLotNumberRequired}"
label="TBI Lot # " id="tbiLotNumber"
value="#{bean.unitDTO.tbiLotNumber}"
disabled="#{bean.disableLotSpecificFields}">
<f:selectItem itemLabel="-Select-" itemValue =""/>
<f:selectItems value="#{bean.communityLotNumber}"/>
</h:selectOneMenu>
selectItem的值由MyFaces SelectItem支持。
现在,我在我的支持bean中通过setDisabled设置了SelectItem的“disabled”属性。它不起作用。
或者,我尝试了以下两个选项
<f:selectItems value="#{bean.communityLotNumber}" var="lot"
itemDisabled="${lot.isDisabled}"/>
和
<f:selectItems value="#{bean.communityLotNumber}" var="lot"
itemDisabled="${bean.isDisabledLot(lot)}"/>
使用支持bean来评估SelectItem并返回布尔值以将其设置为true。 但是,可能因为我使用JSF 1.2,服务器抛出以下错误
com.sun.facelets.tag.TagAttributeException: /WEB-INF/flow/xx/xxxxx/xxcreate_a.xhtml @109,122 itemDisabled="#{bean.isDisabledLot(lot)}" Error Parsing: #{bean.isDisabledLot(lot)}
at com.sun.facelets.tag.TagAttribute.getValueExpression(TagAttribute.java:259)
at com.sun.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:69)
at com.sun.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:36)
at com.sun.facelets.tag.MetaTagHandler.setAttributes(MetaTagHandler.java:62)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:144)
at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
我们正在使用 MyFaces1.2, JSF 1.2和 RichFaces 3.3
有人可以建议替代方案。
答案 0 :(得分:0)
以上必须有效,但var,values和itemDisabled属性'没有相同的支持bean。那是错的。变量和值必须相关。