EL在这里面临一个奇怪的问题。
我只是想在EL中使用String.join(),但它不起作用。
#{String.join(',', myList)}
除了阻止我的页面加载之外,这在JSF中没有做任何事情。我知道我可以用<ui:repeat>
做到这一点,但我需要在EL表达中使用它。
有任何想法吗 ?
你不能用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)}
我找到了解决方法。
在faces-config.xml中将您的util类注册为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也回答了类似的问题。