我已经搜索过并试过了,但这次我真的被卡住了。
我正在尝试构建一个简单的数据表(primefaces),其中单元格内容可以是不同类型。每个单元格内容都有一个持有者类,可以容纳不同的实体,我想使用< C:选择>以实体特定的方式检查和显示正确的实体。
代码如下:
<p:dataTable emptyMessage="" value="#{date.getThreadContent(column.propertyID)}" var="content">
<p:column>
#{content.type}
<c:choose>
<c:when test="#{content.type == 'activity'}">
#{content.activity.name}
</c:when>
<c:when test="#{content.type == 'todo'}">
#{content.activity.name}
</c:when>
<c:otherwise>
Neither activity or todo
</c:otherwise>
</c:choose>
</p:column>
</p:dataTable>
无论我在bean中尝试布尔值或字符串值(我在上面的代码中使用字符串值),EL评估都不起作用。 因此,每次内容不为空时,输出首先显示#{content.type}中的正确内容类型,然后与“不活动或待办事项”一起显示。
我还可以说这个数据表本身表示父数据表中的单元格内容(每个日期的实体列表),在我尝试隔离问题时,此代码中不可见。
这种类型的表达式是不是可以在一个? 任何帮助表示赞赏。
答案 0 :(得分:0)
使用JSF呈现的标记来执行条件显示逻辑,它将它从DOM中完全删除并使验证更容易。
请参阅:http://docs.oracle.com/javaee/6/tutorial/doc/bnaik.html了解EL表达式 此外,BalusC还提供了一个很好的解释:JSTL c:if doesn't work inside a JSF h:dataTable
<p:dataTable emptyMessage="" value="#{date.getThreadContent(column.propertyID)}" var="content">
<p:column>
#{content.type}
<h:outputText value="#{content.activity.name}" rendered="#{content.type == 'activity' or content.type == 'todo'}" />
<h:outputText value="Neither activity or todo" rendered="#{content.type != 'activity' and content.type != 'todo'}" />
</p:column>
</p:dataTable>