JSF 2.0 EL handeling资源键的空值

时间:2012-05-24 00:28:21

标签: jsf-2 tomcat6 myfaces resourcebundle

对你们来说只是一个简单的问题。

我有一个资源键,它作为字符串存储在托管bean中,我想让它解析为特定映射的Resource Bundle中的值。

以下是我的开始:

<h:outputText value="#{msgs[bean.someVal]}"/>

我立即注意到,当someVal为null时,我会得到以下异常:

javax.el.PropertyNotFoundException: /webpage.xhtml at line 118 and column 188 value="#{msgs[bean.someVal]}": Property '' not found on type java.util.PropertyResourceBundle

所以我试图建立一个这样的三元组:

<h:outputText value="#{bean.someVal == null ? '' : msgs[bean.someVal]}"/>

但是我只引用了新值,我得到了相同的错误。

我在Tomcat6上运行JSF2.0(Apache)。

有人有任何想法吗?我对这个很难过。

如果您需要更多信息,请告诉我,我希望这已经足够了......我认为这只是我正在做的事情;)

1 个答案:

答案 0 :(得分:2)

  

找不到属性

你有一个空字符串。空字符串与null不同。

请改为使用empty检查。如果该值不是空字符串,它将检查该值是否为null

<h:outputText value="#{empty bean.someVal ? '' : msgs[bean.someVal]}" />

顺便提一下,另一种方法是在ResourceBundle上提供一个自定义#{msgs}实现,它不会抛出异常,而是返回null或空String } handleGetObject()方法。