【发布时间】:2017-01-25 10:25:53
【问题描述】:
我在 EL 方面遇到了一个奇怪的问题。
我只是想在 EL 中使用String.join(),但它不起作用。
#{String.join(',', myList)}
这在 JSF 中没有做任何事情,除了阻止我的页面加载。我知道我可以用 <ui:repeat> 做到这一点,但我需要在 EL 表达式中使用它。
有什么想法吗?
【问题讨论】:
标签: jsf el static-methods
我在 EL 方面遇到了一个奇怪的问题。
我只是想在 EL 中使用String.join(),但它不起作用。
#{String.join(',', myList)}
这在 JSF 中没有做任何事情,除了阻止我的页面加载。我知道我可以用 <ui:repeat> 做到这一点,但我需要在 EL 表达式中使用它。
有什么想法吗?
【问题讨论】:
标签: jsf el static-methods
你不能用 EL 调用静态方法。创建一个带有调用String.join()的方法的Bean
@RequestScoped
@Named
public class StringBean {
public String join(CharSequence delimiter, Iterable<? extends CharSequence> elements) {
return String.join(delimiter, elements);
}
}
所以你可以拨打#{stringBean.join(',', myList)}
【讨论】:
我找到了解决这个问题的方法。
将您的 util 类注册为 faces-config.xml 中的 bean
<managed-bean>
<managed-bean-name>String</managed-bean-name>
<managed-bean-class>java.lang.String</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
我正在使用 org.apache.commons.lang3.ArrayUtils,它对我有用。
【讨论】:
您可以编写一个自定义函数,将您的静态方法公开为 EL 中的函数。 here已经回答了类似的问题。
【讨论】: