簡體   English   中英

如何在h:selectOneRadio下隱藏f:selectItem標記

[英]How do i hide the f:selectItem tag under h:selectOneRadio

對於<f:selectItem> ,沒有rendered屬性。 如何在<h:selectOneRadio>下隱藏特定的<f:selectItem> <h:selectOneRadio>

<h:selectOneRadio id="radio1" styleClass="selectOneRadio" value="#{}" rendered="#{}">
    <f:selectItem itemValue="ALL" itemLabel="#{ONE}" />
    <f:selectItem itemValue="PRIVATE" itemLabel="#{TWO}" />
    <f:selectItem itemValue="GROUP" itemLabel="#{THREE}" />
</h:selectOneRadio>

在上面的代碼中我想隱藏第二個項目。

<f:selectItem>是一個標記處理程序(在視圖構建時評估),而不是JSF組件(在視圖渲染時評估)。 您只能使用其他標記處理程序顯示/隱藏它,例如JSTL <c:if>

<h:selectOneRadio value="#{bean.selectedItem}">
    <f:selectItem itemValue="ALL" itemLabel="#{ONE}" />
    <c:if test="#{!bean.showPrivate}">
        <f:selectItem itemValue="PRIVATE" itemLabel="#{TWO}" />
    </c:if>
    <f:selectItem itemValue="GROUP" itemLabel="#{THREE}" />
</h:selectOneRadio>

只有當在視圖渲染時間內通過迭代的JSF組件(例如<h:dataTable><ui:repeat>准備了#{bean}時,上面的代碼才會起作用,你真的必須在支持bean代碼中執行它代替。

您可以使用f:selectItems 例如:

 <h:selectOneRadio id="radio1" styleClass="selectOneRadio" rendered="true" value="controller.value">
    <f:selectItems  value="#{controller.items}"  />
 </h:selectOneRadio >

這是類控制器:

 public clss Controller(){

        private List<SelectItem> items = new ArrayList<SelectItem>();

        public Collection<SelectItem> getItems(){
        if (items.isEmpty()){
          createItems();
         }
         return this.items;
        }

        public private createItems(){
          if (condition){ //Here you can hidden the selectItem
             this.items.add(new SelectItem(value,label));
          }
        }

        }

你可以試着把它包圍起來

 <h:panelGrid  rendered="">
   h:selectOneRadio
 </h:panelGrid  >

編輯:

或使用

<h:panelGroup>

編輯

這不是一個好主意,但我認為你可以通過代碼冗余來實現,如下所示

       <h:panelGroup rendered="#{}">
            <h:selectOneRadio id="radio1" styleClass="selectOneRadio" rendered="true">
                <f:selectItem itemValue="ALL" itemLabel="one" />
                <f:selectItem itemValue="PRIVATE" itemLabel="two" />
                <f:selectItem itemValue="GROUP" itemLabel="THREE"  /> 
            </h:selectOneRadio>
        </h:panelGroup>
         <h:panelGroup rendered="#{!}">
            <h:selectOneRadio id="radio11" styleClass="selectOneRadio" rendered="true">
                <f:selectItem itemValue="ALL" itemLabel="one" />
                <f:selectItem itemValue="PRIVATE" itemLabel="two" />

            </h:selectOneRadio>
        </h:panelGroup>

我無法理解標記/來源,但我會建議從標題中猜測

$("a.selectOneRadio f.selectItem").hide()

應該做的工作假設

1) selectOneRadio is the class name of the a tag.
2) selectItem is the class name of the f tag.
3) f is not a tag in HTML. So if `f` is also a class name, you would have to use `.f .selectItem`

如果可以,請在問題中提供一些細節。

如果滿足您的需求, f:selectItem元素上還有一個disabled屬性。 否則你將不得不像Michel Foucault建議的那樣手動添加它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM