0

简单地说,我的 back-bean 中有一个数组,其中包含一些值,例如 '1'-'2'-'3'-'4'-'5' 在 JSF 中,我想在 h:outputlink 中使用渲染属性来显示或不可见基于每一行的一些值链接数据表行,例如我可以在每一行中都有唯一的 id,就像rowvar.accountType.entity.id返回一个唯一的 id,然后我想检查我在后 bean 中填充的那个数组是否包含这个 id,那么渲染的值应该是 true 并且该行应该是可见的。像这样 <h:outputLink rendered="#{Arrays.asList(acceptedIds).contains(rowvar.accountType.entity.id) }"

但当然这是不正确的!

你能帮我看看如何处理吗?

4

3 回答 3

1

我通过使用这些语句解决了我的问题

<c:set var="theString" value="#{MyBean.payByShetabAccount}"/>
<c:set var="theString2" value="#{rowvar.accountType.entity.name}" />

<h:outputLink styleClass="fancybox-iframe  tipsy" 
        rendered="#{fn:contains(theString, theString2) || theString == '*'}"                                        
        title="#{AccountBeanbeanMessages['property_settleToAccount_caption']}"
        value="hello.jsf">
        <h:graphicImage url="img/small-icons/list-operations/left.png" styleClass="standardTable_Icon"></h:graphicImage>
        </h:outputLink>
于 2014-02-04T09:27:35.283 回答
0

我将创建一个接收数组和 id 并返回布尔值的方法。然后 EL 表达式可能类似于“#{existsInArray(array, id)}”

于 2014-02-03T14:36:17.703 回答
0

你是对的,它不会这样工作。

一种选择是重构您的代码,使其使用提供contains()方法而不是使用数组的集合/列表。这样一来,整个故事就轻松多了。

另一种解决方案是在您的 bean 上实现一个方法,该方法接受一个数组作为参数并返回数组值的 Collection 实例。

您还可以实现自定义 EL 函数。看看这个答案,了解如何做到这一点。

于 2014-02-03T14:19:34.247 回答