【问题标题】:JSF EL - replace null with default valueJSF EL - 用默认值替换 null
【发布时间】:2012-09-04 16:44:16
【问题描述】:

有没有办法用 JSF EL 表达式中的默认值替换 null,有点像 Oracle NVL 函数?

我知道我可以做类似的事情

#{obj == null ? 'None' : obj.property}

但希望有一种自动的方法来做到这一点,所以我不会在三元 Elvis 运算符的两侧复制/粘贴相同的表达式。

我正在寻找类似的东西

#{default(obj.property, 'None')}

【问题讨论】:

  • 什么版本的jsf/el好像在新版本可以定义el函数
  • @Stephen:EL 函数从 EL 1.0 开始就一直受支持,并且独立于 JSF 版本。
  • 感谢很高兴知道...也许在 el 2.2 之前定义它们是很棘手的
  • @Stephen:那部分从未改变过。

标签: jsf null el


【解决方案1】:

EL 中不存在这样的东西。不是now,也不是future

最好的办法是创建自定义 EL 函数。

#{my:def(obj.property, 'None')}

(注意:default 是 Java 关键字/文字,在 EL 中使用该名称作为函数名是无效的)

如果您碰巧使用 JSF 实用程序库 OmniFaces,那么您可以使用 #{of:coalesce()} 来达到确切目的。

另见:

【讨论】:

    【解决方案2】:

    在某些情况下你可以使用这个:

    <c:out value="${obj.property}" default="None"/>
    

    (建议here

    【讨论】:

    • OP 使用的是 Facelets,而不是 JSP。
    • 我确实说过“在某些情况下”。此外,这是关于“用 EL 中的默认值替换 null”(搜索提供的)的唯一问题,因此这是人们在搜索答案时会发现的问题(与 JSF、JSP 或一般而言)。
    猜你喜欢
    • 2017-01-23
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 2022-12-11
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多