【发布时间】:2015-02-02 11:29:37
【问题描述】:
我是 JSF 新手,遇到以下问题。 我有几个装有人的容器。这些人可以有问卷容器,其中包含 3 个问题。
现在我想搜索人员并显示他们回答了哪些问题。
我的问题是,如果一个人有不止一份问卷,并且在每份问卷中都回答“是”,那么每份问卷都会显示它。
我如何检查以前的问卷中是否已经回答了某个问题?
<t:dataList value="#{persons.questions}" var="qu" >
<t:dataList value="#{qu.attribute}" var="att">
<h:outputText value="Q1 <br/>"
rendered="#{att.QuestId == 1 and att.attValue == true} "
escape="false" />
<h:outputText value="Q2 <br/>"
rendered="#{att.QuestId == 2 and att.attValue == true} "
escape="false" />
<h:outputText value="Q3"
rendered="#{att.QuestId == 3 and att.attValue == true} " />
</t:dataList>
</t:dataList>
输出可能如下所示:
Person | Question
A.A | Q1
| Q1
_______|_Q2_______
B.B | Q2
| Q3
但应该是:
Person | Question
A.A | Q1
_______|_Q2_______
B.B | Q2
| Q3
【问题讨论】:
-
结果列表似乎是错误的数据库设计或在数据库上执行的错误 SQL 查询的结果。如果它们引起问题而不是摆弄替代品,请修复它们。此外,您在
<h:outputText>(value="Q1 &lt;br/&gt;") 的值属性中使用<br/>标记,方法是将其escape属性设置为false。这真的不是一个好习惯。反过来考虑设计,以完全排除<br/>本身的需要。 -
详细应该有什么问题?在示例中,人 A.A 回答了 2 个问卷。例如第一个 2 个月前和第二个昨天。第一次他回答 Q1:是,Q2:否 Q3:否 第二次他回答 Q1:是,Q2:是,Q3 否
-
那么您应该按问卷调查和个人显示列表。
q1被重复为A.A的人在此应该来自两个不同的问卷。因此,如果列表以问卷方式和个人方式显示(再次假设数据库设计正确并且 SQL 语句正确制定以检索您需要的数据),它们本质上不是重复的并且看起来完全合理。跨度>