h:绑定到Integer属性的inputText是提交值0而不是null

时间:2010-06-25 08:17:21

标签: jsf tomcat integer el zero

我们在JSF页面中使用h:inputText,该页面绑定到Integer属性(因此可以接受null)。如果h:inputText中没有写入任何值,则表单会提交0而不是null。我们正在使用Trinidad 1.2.2和Tomcat 6.0.20(我们也尝试过Tomcat 6.0.14,因为我们读到这可能发生在某些Tomcat版本上)。

这是如何引起的?如何解决?

1 个答案:

答案 0 :(得分:25)

此“功能”是EL中的错误修复的结果,它是根据Tomcat 6.0.16引入的。根据{{​​3}}的第1.18.3章,数字类型null的值应该被强制为0.在Tomcat 6.0.16之前,这被“错误地”强制转换为空字符串。 / p>

毕竟,空字符串实际上比零更直观。 Apache的Tomcat人员对这个bug修正了很多抱怨,因此他们根据Tomcat 6.0.17引入了一个新的VM参数设置,这将禁用这个错误修复。

-Dorg.apache.el.parser.COERCE_TO_ZERO=false

我顺便要求更改此规范,它应该只将空/空原始类型强制为零并且空/空非原始 {{ 1}}类型为空字符串:EL specification。他们对此并不多,但这个问题至少获得了很多选票。谁知道......这种行为至少确实令人讨厌,因为它不直观。

另见:

相关问题