代码之家  ›  专栏  ›  技术社区  ›  Averroes

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

  •  14
  • Averroes  · 技术社区  · 14 年前

    我们正在使用 h:inputText 在绑定到 Integer 财产(因此可以接受 null )当没有值写入 输入文本 ,表单正在提交 0 而不是 无效的 . 我们正在使用特立尼达1.2.2和Tomcat 6.0.20(我们还尝试使用Tomcat 6.0.14,因为我们了解到这可能发生在某些特定的Tomcat版本中)。

    这是怎么造成的?我怎么解决?

    1 回复  |  直到 9 年前
        1
  •  24
  •   Community Reversed Engineer    7 年前

    这个“特性”是根据Tomcat6.0.16在EL中引入的错误修复的结果。根据第1.18.3章 EL specification ,数字类型的值 null 应强制为0。在tomcat 6.0.16之前,这是“错误的”被强制为空字符串。

    毕竟,空字符串实际上比零更直观。Apache的Tomcat成员对这个bugfix有很多抱怨,所以他们根据Tomcat6.0.17引入了一个新的虚拟机参数配置设置,这将禁用这个bugfix。

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

    顺便说一下,我请求更改这个规范,它只应强制为空/空 原始的 类型为零和空/空 非本原 java.lang.Number 空字符串的类型: JSP EL issue 184 . 他们不怎么赞成,但这个问题至少得到了很多选票。谁知道…这种行为至少确实很烦人,因为它不直观。

    参见: