嵌套ui中的JSF逻辑运算符:repeat

时间:2016-07-07 20:12:54

标签: jsf el

我有一组数据列表形式的数据,我想根据菜单类别显示每种食物,但是我无法使用ELParser中的逻辑运算符eq进行检查,请帮我解决这个问题< / p>

<ui:repeat var="menu" value="#{eventBean.menuList}">
                <li><ol><h5>#{menu}</h5></ol></li>
                <ui:repeat var="food" value="#{eventBean.projectDetail.foodList}">
                    <li>
                    <ui:fragment ></ui:fragment>
                        <ol><h:outputText rendered="#{food.menu eq menu}">#{food.name}</h:outputText></ol>
                    </li>
                </ui:repeat>
            </ui:repeat>

菜单可以显示,但内部循环不显示任何食物。我曾尝试#{food.menu eq #{menu}},但会在ELParser上获得例外

编辑1:

我刚刚意识到<h:outputText>#{food.name}</h:outputText>基本上无法显示值,我必须<h:outputText value="#{food.name}"></h:outputText>才能显示值,我的错误。

现在我正在搜索是否要过滤条件

2 个答案:

答案 0 :(得分:1)

我曾尝试JSTL c:if进行状态检查,但没有按预期工作,然后我搜索堆栈溢出,link通过实施帮助我:

<ui:fragment rendered="#{food.menu eq menu}">#{food.name}</ui:fragment>

答案 1 :(得分:-1)

根据您的过滤需要的复杂程度,我会使用基本的jsf标签或自定义功能

仅限几个选项:

<c:if test="#{condition}">do stuff</c:if>

对于有限数量的选项:

<c:choose>
    <c:when test="#{condition1}">do stuff</c:when>
    <c:when test="#{condition2}">do other stuff</c:when>
    <c:otherwise>do something else</c:otherwise>
</c:choose>
对于N选项的

,请查看此处的sollution,您可以使用自定义EL函数执行java函数可以执行的任何操作:

https://stackoverflow.com/a/7080174/2045820