Jsf 动态更改输入类型

Jsf 动态更改输入类型,jsf,Jsf,我正在使用JSF2.2。我正在尝试建立一个考试系统。有些问题有一个正确答案,有些问题有多个正确答案。根据这一点,我的视图应该显示单选按钮或复选框。我的XHTML页面中有一个硬编码示例: <h:dataTable value="#{main.answerList}" var="list"> <h:column> <h:selectBooleanCheckbox id="checkboxAnswer" value="#{list.check}"/

我正在使用JSF2.2。我正在尝试建立一个考试系统。有些问题有一个正确答案,有些问题有多个正确答案。根据这一点,我的视图应该显示单选按钮或复选框。我的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>


如何根据问题类型在单选按钮和复选框之间切换?

只需使用
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}
应该用所提到的值表示一个
枚举

我应该为这个枚举编写特殊的转换器吗?不。它们是作为字符串计算的。为什么不把它们都放进去,只渲染一个呢?编辑(将其重新格式化为答案):我建议您同时放置(selectOneRadio和selectManyCheckbox),并根据正确答案的数量仅呈现一个。@subodh:请停止将非代码格式化为代码。库/框架/实体名称不是代码!我很难理解你的问题。。。请不要假设我们了解您的业务需求,只是尝试解释您的技术问题。