簡體   English   中英

Primefaces數據表中的Radio和Checkbox

[英]Radio and Checkbox in primefaces datatable

我必須將無線電和chechbox控件放在primefaces的2.2.1數據表中,而不是作為選擇模式控件。 我想將控件綁定為支持bean的值。

例如:

A有一些配置列表,在該列表中,一次只能有一個配置(radiobox),但每個配置都可以是活動的(selectbox)。

數據表不必是可編輯的,因為我將在另一個窗口中更改值。 只有控件應該在數據表中。

那可能嗎?

是的,我絕對有可能在我的數據表中一直這樣做。 但是,您需要記住每一行都需要識別。 您可以使用對象或參數對偵聽器執行此操作:

//Backing Bean
@ViewScoped
public class TestBean
{
  private ArrayList<Element> elements;
  TestBean(){...}

  public ArrayList<Element> getElements(){...} //Initialize things here

  public class Element
  {
     /* getter/setter and initialization assumed */
     private boolean selected;
     private String radioSelection = "one";
     private String[] radioChoices = new String[]{"one", "two", "three"};
     public void selectMe(ActionEvent evt)
     {
       System.out.println("Selected -> " + this); 
     } 
  }
}

// HTML

<p:dataTable value="testBean.elements" var="element">
  <p:column>
    <p:commandButton value="Select" actionListener="#{element.selectMe}"
  </p:column>

  <p:column>
    <h:selectBooleanCheckbox value="#{element.selected}" />
  </p:column>         

  <p:column>
    <h:selectOneRadio value="#{element.radioSelection}">
      <f:selectItems 
        value="#{element.radioChoices}" 
        var="item" 
        itemLabel="#{item}"  
        itemValue="#{item}" 
      />
    </h:selectOneRadio>
  </p:column>
</p:dataTable>

您可以(並且可能希望)使用元素中的ID或您喜歡的模式的參數。 關鍵是要記住每一行都有自己的id,你要創建一組元素,而不是單個元素。 這就是你最有可能被束縛的地方。 看看每個按鈕是如何成為一等公民,你應該能夠隨心所欲地使用它。

編輯:我添加了一個Radio / Checkbox示例。 聽起來你是JSF的新手,所以我建議你閱讀SelectItem類並運行組合框等工作方式。 要記住的關鍵(正如我在上面強調的那樣)是你渲染了很多組件,所以如果你共享一個值,它很容易導致你不想要的行為。 封裝所有內容並且通常處於良好狀態。)您還可以將綁定視為可能的解決方案。 這一切都取決於你寧願編寫代碼的地方。

暫無
暫無

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

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