首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式设置-Dorg.apache.el.parser.COERCE_TO_ZERO=false

如何以编程方式设置-Dorg.apache.el.parser.COERCE_TO_ZERO=false
EN

Stack Overflow用户
提问于 2011-03-07 20:42:51
回答 1查看 22.8K关注 0票数 25

这个问题类似于:

jsf: integer property binded to a inputtext in UI is set to zero on submit

但我对解决办法并不完全满意。上下文是一样的:我有一个web表单,需要一个Integer值。如果文本框是空的,我希望我的Integer字段为'null‘,但是empty会自动将我的id字段设置为'0’。

我可以通过在本地Tomcat中设置JVM参数来解决这个问题:

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

但是,这对我们客户的机器不起作用。是否可以设置/更改这个JVM参数"in-code“。

更新:--我发现这是被请求的,但是如果其他人有其他解决办法,我也想听听。

https://issues.apache.org/bugzilla/show_bug.cgi?id=48813

更新2:我不能将值从'0‘更改为'null’,因为我的应用程序应该将'0‘当作一个实际的id。因此,我需要在运行时知道id文本框是否为空。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-07 20:47:09

可以使用System#setProperty()以编程方式设置系统属性。

代码语言:javascript
运行
复制
System.setProperty("org.apache.el.parser.COERCE_TO_ZERO", "false");

但是,您需要确保这是在JSF/EL初始化之前设置的。最好的地方是ServletContextListener

代码语言:javascript
运行
复制
public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        System.setProperty("org.apache.el.parser.COERCE_TO_ZERO", "false");
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // NOOP
    }

}

<listener>中注册为web.xml,或者当您已经使用Servlet3.0 (Tomcat 7等)时,使用@WebListener注释。

票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5225013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档