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

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

这是如何造成的,我该如何解决?

这个“function”是根据Tomcat 6.0.16引入的EL中的错误修正的结果。 按照EL规范的第1.18.3章节,数字types为null应该被强制为0.在Tomcat 6.0.16之前,这被错误地强制为空string。

毕竟,空string实际上比零更直观。 在Apache的Tomcat家伙得到了很多有关这个错误修正的抱怨,所以他们引入了一个新的configuration设置,根据Tomcat 6.0.17 VM参数的味道,这将禁用这个错误修复。

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

我顺便要求改变这个规范,它应该只强制空/空基本types为零和空/空的非基元 java.lang.Numbertypes为空string: JSP EL问题184 。 他们没有多less,但这个问题至less得到了很多票。 谁知道……这种行为至less确实非常恼人,因为它是非直观的。

也可以看看:

  • 空弦疯狂
  • 如何使数字input区最初为空而不是0或0.00?
  • 如何以编程方式设置-Dorg.apache.el.parser.COERCE_TO_ZERO = false
  • 在Mojarra JSF 2.1中解决错误的INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
Interesting Posts