0

我有一个 JSF 页面,我根据托管 bean 属性控制渲染器属性。

<p:commandLink action="#{smartphoneBean.drillDown(smartphone.ldapuser,smartphone.productGrp)}"
                            rendered="#{!(smartphone.ldapuser.charAt(0) ge '0' and smartphone.ldapuser.charAt(0) le '9')}"  value="#{smartphone.ldapuser}">

一旦我运行我的代码。这个值以任意数字开头的 commandLink 仍然会被渲染。

我希望比较 char 值的整数表示。

你对这个问题有什么想法吗?

4

1 回答 1

1

String#charAt(int)返回一个char(Unicode 代码点),它在 EL 中解释为Number. 被'0'评估为String,而不是Number。因此,比较总是会产生不希望的结果。

具有 Unicode 代码点的字符48057。所以,这应该这样做:9

rendered="#{!(smartphone.ldapuser.charAt(0) ge 48 and smartphone.ldapuser.charAt(0) le 57)}"  value="#{smartphone.ldapuser}">

也可以看看:

于 2013-03-20T11:50:30.207 回答