2011-12-17 61 views
1

我想在列表中的每一行上都有一個單選按鈕。這個單選按鈕將用於指示哪個答案是正確的。但是,如何在數據表中找到該數據?我嘗試在表格周圍添加一個<h:form><h:selectOneRadio>,然後在每列中添加一個<f:selectItem .../>,但它不起作用。如何在數據表的每一行上添加一個單選按鈕

 <h:dataTable id="answerTable" 
      value="#{questionHandler.answers}" var="answer"> 
      <h:column> 
       <p> 
        <o:inputText id="sd" value="#{answer.description}" 
         styleClass="text" size="100" /> 
       </p> 
      </h:column> 

      <h:column> 
      <!-- I want a radiobutton in each row--> 
      </h:column> 
     </h:dataTable> 

回答

3

這是不可能與標準JSF組件不使在自定義JavaScript函數來取消在同一列中的所有其它無線電按鈕每當點擊單選按鈕。它們不是由相同的輸入字段名稱分組的(這是一個基於HTML的先決條件,當組中的一個被選中時,取消選中所有其他按鈕)。 JSF在字段名稱中插入表格行索引,另請參閱在Web瀏覽器中生成的HTML輸出。

但是,您似乎正在使用OpenFaces,所以您應該能夠通過其<o:dataTable>組件與<o:singleRowSelection>的組合來實現功能要求。詳情請閱讀OpenFaces developer documentation on DataTable Row Selection。以下是其開發者文檔相關摘錄:

<o:dataTable var="product" 
      value="#{ProductsList.products}" > 
    <o:singleRowSelection 
      rowData="#{ProductList.selectedProduct}" 
      action="#{ProductList.processProductSelection}"/> 
    <o:column> 
    <f:facet name="header"> 
     <h:outputText value="name"/> 
    </f:facet> 
    <h:outputText value="#{product.name}" /> 
    </o:column> 
</o:dataTable> 

幾乎所有其他JSF組件庫也提供類似的功能,例如, PrimeFacesRichFaces。如果我沒有發現您已經在使用支持此功能的組件庫,那麼我會推薦這樣做。

相關問題