我需要禁用基于备份bean的selectItem列表中的几个项。下面是代码片段
<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中设置SelectItem的setDisabled的“禁用”属性的bean。它不起作用。
或者,我尝试了以下两种选择
<f:selectItems value="#{bean.communityLotNumber}" var="lot"
itemDisabled="${lot.isDisabled}"/>和
<f:selectItems value="#{bean.communityLotNumber}" var="lot"
itemDisabled="${bean.isDisabledLot(lot)}"/>使用boolean计算SelectItem,并返回布尔值以将其设置为true。但是,由于im使用JSF1.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、JSF1.2和RichFaces 3.3
有人能提出一个替代方案吗。
发布于 2014-04-21 17:21:26
以上内容必须适用于变量、值和itemDisabled属性‘不具有相同支持bean这一例外情况。这是不对的。变量和值必须相关。
https://stackoverflow.com/questions/22230084
复制相似问题