【问题标题】:Using greater than logical expression in rendered attribute在渲染属性中使用大于逻辑表达式
【发布时间】:2011-11-01 00:20:35
【问题描述】:

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

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

如果我在rendered 中使用==!=,它工作正常。但是对于大于和小于,它没有给出输出。这可能是什么原因?

【问题讨论】:

    标签: jsf


    【解决方案1】:

    您必须使用gtlt 运算符。

    查看来自 Sun/Oracle 的 JavaServer Faces Expression Language Intro。正是运算符部分。

    【讨论】:

    • 确实,原因是&lt;&gt; 是XHTML 中的特殊字符。当您使用过 JSP 时,这将是可行的。
    • 大于等于的运算符是什么
    • @Ganesh 这是ge。查看答案中的链接,尤其是Operators一章。
    【解决方案2】:

    rendered 只接受 EL 表达式。

    subsAlertsHelper.personEmail.length() 不正确。

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

    public int getLength(){ return this. length();}
    

    修改:

    rendered="#{subsAlertsHelper.personEmail.length >20}"
    

    【讨论】:

    • 也可以试试 gt rendering="#{subsAlertsHelper.personEmail.length gt 20}"
    • 让自己保持最新状态。阅读 2009 年 12 月左右随 Servlet 3.0 引入的 EL 2.2。自 EL 2.2 起允许直接调用非 getter 方法,也可以使用参数。
    • 我目前只使用 JSF 1.2 并且永远不必使用 EL 2.2。你说得对。对不起这个答案......我的评论可能是最合适的(关于 gt 的使用)。
    猜你喜欢
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    相关资源
    最近更新 更多