使用JSF1.2禁用JSF下拉项

时间:2014-03-06 16:20:31

标签: myfaces

我需要在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

有人可以建议替代方案。

1 个答案:

答案 0 :(得分:0)

以上必须有效,但var,values和itemDisabled属性'没有相同的支持bean。那是错的。变量和值必须相关。