【问题标题】:ignoring duplicate entries in t:dataList JSF忽略 t:dataList JSF 中的重复条目
【发布时间】: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 &lt;br/&gt;" 
                             rendered="#{att.QuestId == 1 and att.attValue == true} "     
                             escape="false" /> 
               <h:outputText value="Q2 &lt;br/&gt;" 
                             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 查询的结果。如果它们引起问题而不是摆弄替代品,请修复它们。此外,您在&lt;h:outputText&gt; (value="Q1 &amp;lt;br/&amp;gt;" ) 的值属性中使用&lt;br/&gt; 标记,方法是将其escape 属性设置为false。这真的不是一个好习惯。反过来考虑设计,以完全排除 &lt;br/&gt; 本身的需要。
  • 详细应该有什么问题?在示例中,人 A.A 回答了 2 个问卷。例如第一个 2 个月前和第二个昨天。第一次他回答 Q1:是,Q2:否 Q3:否 第二次他回答 Q1:是,Q2:是,Q3 否
  • 那么您应该按问卷调查和个人显示列表。 q1 被重复为A.A 的人在此应该来自两个不同的问卷。因此,如果列表以问卷方式和个人方式显示(再次假设数据库设计正确并且 SQL 语句正确制定以检索您需要的数据),它们本质上不是重复的并且看起来完全合理。跨度>

标签: jsf jsf-2 datalist


【解决方案1】:

您应该过滤它,例如您的数据库查询...这不是 jsd 组件应该修复/纠正的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2013-10-31
    • 2010-10-23
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多