2014-03-06 92 views
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

有人可以提出一種替代。

回答

0

以上必須努力枝條例外的是VAR,價值觀和itemDisabled屬性不具有相同的支持bean。那是錯的。變量和值必須相關。