Jsf 2 解决在MojarraJSF2.1中错误地将\u空\u字符串\u提交的\u值\u解释为\u空的问题

Jsf 2 解决在MojarraJSF2.1中错误地将\u空\u字符串\u提交的\u值\u解释为\u空的问题,jsf-2,jboss6.x,mojarra,Jsf 2,Jboss6.x,Mojarra,我知道有很多关于在JSF2中将空字符串转换为null的帖子。通常的做法是将以下内容添加到web.xml中 <context-param> <description>Does not appear to work</description> <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name> <param

我知道有很多关于在JSF2中将空字符串转换为null的帖子。通常的做法是将以下内容添加到web.xml中

<context-param>
  <description>Does not appear to work</description>
  <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
  <param-value>true</param-value>
</context-param>
我已尝试(无效)在getAsObject中显式设置组件提交值:

if (component instanceof EditableValueHolder)
    ((EditableValueHolder) component).setSubmittedValue(null);

我正在使用JBoss6(实际上是6.1的快照)和JSF2.1.1。

这不是Mojarra特有的。这是Tomcat特有的(JBoss使用Tomcat作为servletcontainer)。将以下VM参数添加到启动选项

-Dorg.apache.el.parser.COERCE_TO_ZERO=false
根据我的经验,这一点实际上应该只适用于
Number
属性(int、long等),但是由于某个Tomcat 6.0.x版本(至少在6.0.20之后)的后期版本,它似乎也被字符串打破,并且依赖于上面的VM参数


例如,在GlassFish 3.x上,它在盒子外工作得非常好。

这是一种享受。你知道吗,我看到你之前在其他地方回答过这个问题,但帖子只提到了Tomcat。当然,我应该意识到这也适用于JBoss AS.NB:如果将元素放在
中,则上述方法不起作用,但如果替换为
@Nikhil,则上述方法起作用。Nikhil:我认为您将其与Mojarra中的
的许多错误之一混淆了。试试最新的MyFaces,看看它是否有不同的表现。谢谢你,巴卢斯克。我用了Tomcat7,这个可以修复它。非常感谢。我有一个小问题,所以在Netbean中,我只需右键单击Tomcat服务器并添加JVM选项,然而,我必须在真正的服务器上设置这个选项。我应该在tomcat目录中的何处设置这个JVM选项,BalusC?@Thang:set
JAVA\u OPTS
环境变量,或者编辑tomcat启动脚本,或者如果它是Windows服务,则在Apache feather systray图标后面的设置面板中的某个位置设置它。
-Dorg.apache.el.parser.COERCE_TO_ZERO=false