2013-02-20 71 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