2013-02-20 98 views
0

我正在使用JSF 2.2。我正在試圖建立一個考試系統。有些問題有1個正確答案,其他答案有多個正確答案。據此,我的觀點應該顯示單選按鈕或複選框。我在我的XHTML頁面一個硬編碼的例子:動態更改輸入類型

<h:dataTable value="#{main.answerList}" var="list"> 
    <h:column> 
     <h:selectBooleanCheckbox id="checkboxAnswer" value="#{list.check}"/> 
     <h:outputText value="#{list.ansValue}"/> 
    </h:column> 
</h:dataTable> 

我如何單選按鈕和複選框之間切換,這取決於問題的類型?

+0

@subodh:請停止將非代碼格式化爲代碼。庫/框架/實體名稱不是代碼! – BalusC 2013-02-20 12:25:13

+0

我無法理解您的問題......請不要認爲我們瞭解您的業務需求,只是試圖解釋您的技術問題。 – 2013-02-20 12:25:52

+0

爲什麼你不把兩個都渲染出來?編輯(將其重新表述爲答案):我建議你同時放置兩個(selectOneRadio和selectManyCheckbox),並且只根據正確答案的數量渲染一個。 – pgras 2013-02-20 11:41:12

回答

0

只需使用rendered屬性根據問題類型在輸入類型之間進行切換。你的問題中的代碼(變量名稱)不是自我記錄的,所以我也對它進行了修改,以便它變得更加自我記錄,並且它們立即明白每個屬性代表什麼。

<h:dataTable value="#{bean.questions}" var="question"> 
    <h:column> 
     <h:selectOneRadio value="#{question.selectedAnswer}" rendered="#{question.type == 'SINGLE_CHOICE'}"> 
      <f:selectItems value="#{question.availableAnswers}" /> 
     </h:selectOneRadio> 
     <h:selectManyCheckbox value="#{question.selectedAnswers}" rendered="#{question.type == 'MULTIPLE_CHOICE'}"> 
      <f:selectItems value="#{question.availableAnswers}" /> 
     </h:selectManyCheckbox> 
    </h:column> 
</h:dataTable> 

#{question.type}應代表與所提到的值的enum

+0

我應該爲這個枚舉編寫特殊的轉換器嗎? – burnmyheaven 2013-02-20 12:50:02

+0

不可以。他們被評估爲字符串。 – BalusC 2013-02-20 12:50:41