我有一个JSF页面,我根据托管bean属性控制renderer属性。
<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值的整数表示。
你对这个问题有什么看法吗?答案 0 :(得分:1)
String#charAt(int)
返回一个char
(一个Unicode代码点),在EL中解释为Number
。 '0'
评估为String
,而不是Number
。因此,比较将总是产生不希望的结果。
字符0
到9
的Unicode代码点为48 to 57。所以,这应该做:
rendered="#{!(smartphone.ldapuser.charAt(0) ge 48 and smartphone.ldapuser.charAt(0) le 57)}" value="#{smartphone.ldapuser}">