发布
社区首页 >问答首页 >forEach中的多个forEach

forEach中的多个forEach
EN

Stack Overflow用户
提问于 2015-04-28 01:55:13
回答 1查看 375关注 0票数 2

我有一个名为“问题”的豆子,有很多其他的选择-->

代码语言:javascript
代码运行次数:0
复制
 Question have 1:N Alternative. 

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

代码语言:javascript
代码运行次数:0
复制
 Page have 1:N Question

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

代码语言:javascript
代码运行次数:0
复制
<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中的列表中设置每个选项。我不能为每个问题创建一个变量,因为这是动态的,我不知道设计时问题的数量。

解决:

我在RadioButton中使用了一个Map,参见:

代码语言:javascript
代码运行次数:0
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2015-04-28 09:43:23

First,您不能混合呈现时间(例如f:selectItems,h:inputText .)和构建时标记(JSTL标记,f:actionListener,ui:include . ),要更多地了解视图构建时和呈现时间概念以及它是如何工作的,请看一下BalusC的回答:JSF2中的JSTL .合乎道理?

因此,国际海事组织唯一要替换的是用c:forEach标记替换ui:repeat,如下所示:

代码语言:javascript
代码运行次数:0
复制
<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>

value属性的ui:重复标签是:

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29908966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档