forEach

时间:2015-04-28 01:55:14

标签: jsf jsf-2

我有一个名为Question的bean,有很多替代品 - >

 Question have 1:N Alternative. 

我有一个有很多问题的页面,例如:

 Page have 1:N Question

我需要创建一个XHTML页面,显示问题的数量和替代方案,如下所示:

<c:forEach var="questaoCurso"
           items="#{cursandoMB.paginaAtualProva.questoesCurso}">
    <h:outputText value="#{questaoCurso.questao.texto}" />
    <br />

    <h:selectOneRadio style="font-weight: normal"
                      value="#{cursandoMB.alternativasEscolhida}" layout="pageDirection">

        <f:selectItems value="#{questaoCurso.questao.alternativasPreenchidas}"
                       var="c"
                       itemValue="#{c}"
                       itemLabel="#{c.texto}" />
    </h:selectOneRadio>
    <br />
    <br />
</c:forEach>

问题在于我不知道如何在ManagedBean的List中设置每个选项。我无法为每个问题创建一个变量,因为这是动态的,我不知道设计时的问题数量。

已解决:

我在RadioButton中使用了Map,请参阅:

<h:selectOneRadio
            value="#{cursandoMB.alternativasEscolhidas[questaoCurso]}" converter="entityConverter" layout="pageDirection">
            <f:selectItems
                value="#{questaoCurso.questao.alternativasPreenchidas}" var="c"
                itemValue="#{c}" itemLabel="#{c.texto}" />
        </h:selectOneRadio>

1 个答案:

答案 0 :(得分:0)

首先,你不能混合渲染时间(例如f:selectItems,h:inputText ...)和构建时标签(JSTL标签,f:actionListener,ui:include .. 。),为了更好地理解视图构建时间和渲染时间概念及其工作原理,请查看BalusC的答案:JSTL in JSF2 Facelets... makes sense?

所以IMO唯一要替换的是带有c:forEach的{​​{1}}标记,如下所示:

ui:repeat

ui:repeat Tag<ui:repeat var="questaoCurso" value="#{cursandoMB.paginaAtualProva.questoesCurso}"> <h:outputText value="#{questaoCurso.questao.texto}" /> <br /> <h:selectOneRadio style="font-weight: normal" value="#{cursandoMB.alternativasEscolhida}" layout="pageDirection"> <f:selectItems value="#{questaoCurso.questao.alternativasPreenchidas}" var="c" itemValue="#{c}" itemLabel="#{c.texto}" /> </h:selectOneRadio> <br /> <br /> </ui:repeat> 属性为:

  

此标记迭代的项目集合的名称。该   集合可以是List,数组,java.sql.ResultSet或个人   java对象。如果集合为null,则此标记不执行任何操作。

因此,您可以在value中使用List对象,在您的情况下,它将是一个问题对象列表,在您的问题bean中,您可以包含value个答案(而List也可能是一个bean)。