使用null-string参数调用EL方法接收空字符串

时间:2015-04-10 14:14:50

标签: jsf-2 primefaces jboss

我有一个PrimeFaces commandLink,我想调用一个带有一些参数的actionListener。其中一个参数可能是 null 。首先,我偶然发现this issue并将票证中的补丁2152应用到jbossweb 7.0.17(这是JBoss随附的)。 NPE消失了,但我的actionListener获取一个空字符串passend作为参数而不是 null 。我还将系统属性 org.apache.el.parser.COERCE_TO_ZERO 设置为 false ,但方法调用没有任何变化。

actionListener="#{fileDownloadBean.downloadChainFile(cc.attrs.forChain, cc.parent.attrs.value, cc.parent.attrs.header)}" 
// => cc.parent.attrs.header could be null but is passed as empty string

如果我通过EL检查JSF / xHTML中的 null 值,一切都是正确的

#{cc.parent.attrs.header eq null}
// => returns true

//Edit 03.04.2015 18:05: returns also true
#{empty cc.parent.attrs.header}

有关我做错的任何建议吗?是否将 null 传递给EL方法禁止?

我正在使用PrimeFaces 5.2,JBoss 7.1.3,Mojarra 2.1.29-jbossorg-1。

编辑11.04.2015 17:10

正如评论中所提到的,我已经测试过下面的上下文参数,但没有成功。它似乎只影响UIInput-components的提交值。

javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL=true

1 个答案:

答案 0 :(得分:0)

在你的web.xml中:

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

BalusC talks about this briefly here: