我有一个名为“问题”的豆子,有很多其他的选择-->
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中的列表中设置每个选项。我不能为每个问题创建一个变量,因为这是动态的,我不知道设计时问题的数量。
解决:
我在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>
发布于 2015-04-28 09:43:23
First,您不能混合呈现时间(例如f:selectItems,h:inputText .)和构建时标记(JSTL标记,f:actionListener,ui:include . ),要更多地了解视图构建时和呈现时间概念以及它是如何工作的,请看一下BalusC的回答:JSF2中的JSTL .合乎道理?
因此,国际海事组织唯一要替换的是用c:forEach
标记替换ui:repeat
,如下所示:
<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)。
https://stackoverflow.com/questions/29908966
复制相似问题