0
我需要禁用基於輔助bean的selectItem列表中的少數項目。以下是代碼片段使用JSF1.2禁用JSF下拉菜單
<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支持。
現在,我設置SelectItem的「禁用」屬性,通過setDisabled在我的支持bean中。這是行不通的。
另外,我都嘗試以下選項
<f:selectItems value="#{bean.communityLotNumber}" var="lot"
itemDisabled="${lot.isDisabled}"/>
和
<f:selectItems value="#{bean.communityLotNumber}" var="lot"
itemDisabled="${bean.isDisabledLot(lot)}"/>
與支持bean來評估選擇信息並返回boolean值設置爲真。 但是,可能因爲即時通訊使用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
有人可以提出一種替代。