我正在迭代实体列表,使用特定图标呈现一些链接。我想在迭代期间根据当前活动课程有条件地设置class
属性值,如下所示,以便“活动”项目获得不同的样式:
<ui:repeat value="#{lessonBean.allLessons}" var="lesson">
<li>
<h:form>
<h:commandLink>
<i class="#{lessonBean.currentLesson == lesson ? 'green' : ''}" />
</h:commandLink>
</h:form>
</li>
</ui:repeat>
它似乎永远不会在比较中返回true
因此永远不会打印green
。我搜索了一些示例,并使用#{view.viewId}
找到了some solutions,但这不符合我的要求。
我如何达到我的要求?
答案 0 :(得分:0)
如果Lesson
实体没有正确实施Object#equals()
方法,则此构造将失败,因此两个实例表示相同的&#34;值&#34;将永远不会平等。
相应地采取行动。以下是基于实体技术ID的示例:
private Long id;
@Override
public boolean equals(Object other) {
return (other != null && getClass() == other.getClass() && id != null)
? id.equals(getClass().cast(other).id)
: (other == this);
}