9

Is there a way to replace null with a default value in JSF EL expressions, sort of like the Oracle NVL function?

I know I can do something like

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

But was hoping there is an automatic way to do it so I'm not copy/pasting the same expression on both sides of the ternary Elvis operator.

I'm looking for something like

#{default(obj.property, 'None')}
wrschneider
  • 17,913
  • 16
  • 96
  • 176

2 Answers2

8

No such thing exist in EL. Not now and not in the future.

Your best bet is creating a custom EL function.

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

(note: as default is a Java keyword/literal, it's invalid to use exactly this name as function name in EL)

If you happen to use JSF utility library OmniFaces, then you can use #{of:coalesce()} for the exact purpose.

See also:

Community
  • 1
  • 1
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
2

In some situations you can use this:

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

(as suggested here)

David Balažic
  • 1,319
  • 1
  • 23
  • 50
  • 2
    OP is using Facelets, not JSP. – BalusC Dec 19 '14 at 07:51
  • I did say "in some situations". Also, this is the only question about "replace null with default value in EL" (thet the search provides), so it is what people will find when searching for an answer (related to JSF,JSP or in general). – David Balažic Dec 20 '14 at 12:22