在渲染属性中使用大于逻辑的表达式

swe*_*tha 20 jsf

我有一个outputText字段,我在rendered属性中写了一个条件.条件是将字符串的长度与某个数值进行比较.

<h:outputText id="emailaddress" 
    value ="#{subsAlertsHelper.personEmail.substring(0,20)}"
    rendered="#{subsAlertsHelper.personEmail.length() >20}" />
Run Code Online (Sandbox Code Playgroud)

如果我使用==!=rendered其中工作正常.但是对于greaterthan和lessthan来说,它没有给出输出.可能是什么原因?

tim*_*ooo 47

你必须使用gtlt运营商.

查看Sun/Oracle的JavaServer Faces表达式语言简介.正是运营商部分.

  • 实际上,原因是`<`和`>`是XHTML中的特殊字符.当您使用JSP时,这将起作用. (2认同)
  • @Ganesh 这是“ge”。查看答案中的链接,尤其是_Operators_一章。 (2认同)

Jea*_*les 3

rendered只接受 EL 表达式。

subsAlertsHelper.personEmail.length()是不正确的。

在 personEmail 对象上,添加一个getLength()返回长度的方法

public int getLength(){ return this. length();}
Run Code Online (Sandbox Code Playgroud)

调整 :

rendered="#{subsAlertsHelper.personEmail.length >20}"
Run Code Online (Sandbox Code Playgroud)

  • 让自己保持最新状态。请继续阅读 EL 2.2,它是在 2009 年 12 月左右随 Servlet 3.0 引入的。从 EL 2.2 开始,允许直接调用非 getter 方法,也可以使用参数。 (3认同)