我们h:inputText在一个绑定到Integer属性的JSF页面中使用a (因此可以接受null).当没有写入的值时h:inputText,表单提交的是0代替null.我们正在使用Trinidad 1.2.2和Tomcat 6.0.20(我们也尝试过Tomcat 6.0.14,因为我们读到这可能发生在某些Tomcat版本上).
这是怎么造成的,我该如何解决?
我将bean绑定到jsp页面中的inputtext UI元素的整数属性.
最初在渲染它们时,此整数属性的默认值为null.
现在,当我在不更改此inputtext字段的情况下提交表单时,即使ui文本字段为空,此字段也会在bean中设置为整数值零.
因为我想跟踪字段的更改并仅更新配置文件中更改的那些字段,但这给我带来了问题,因为它导致对所有整数字段的更新.
我正在使用jsf 1.2
我开发了一个新的应用程序,它在Tomcat 7上运行完美!但我正在尝试在Tomcat 8上部署相同的WAR,而我正在使用它NullPointerException.为了开发这个应用程序,我使用了以下框架和库:
在Tomcat 7.0.42上部署时没有发生错误.运行很好.但是,当我在Tomcat 8.0.0 RC5上部署相同的WAR时,我遇到了这个异常:
30-Oct-2013 16:00:27.659 INFO [http-nio-8080-exec-2] org.apache.catalina.core.ApplicationContext.log No state saving method defined, assuming default server state saving
30-Oct-2013 16:00:29.499 SEVERE [http-nio-8080-exec-3] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Faces Servlet] in context with path [/contacel] threw exception [null] with root cause
java.lang.NullPointerException
at org.apache.myfaces.view.facelets.tag.TagAttributeImpl.getBoolean(TagAttributeImpl.java:143)
at org.apache.myfaces.view.facelets.tag.jstl.core.IfHandler.apply(IfHandler.java:105)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:58)
at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:310)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:53)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:57)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:49)
at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
at …Run Code Online (Sandbox Code Playgroud) 是否有可能告诉我的JSF实现将空数转换为null.到目前为止,我总是得到0(相应的复杂类型).
对于空字符串有javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL,但我无法找到任何数字.顺便说一下:不,我不能使用vm-argument:-Dorg.apache.el.parser.COERCE_TO_ZERO = false
自定义数字转换器是我唯一的可能吗?