gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:44:07 24 4
gpt4 key购买 nike

这个问题类似于:

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

但我对解决方案并不完全满意。上下文是相同的:我有一个需要整数值的 Web 表单。如果文本框留空,我希望我的整数字段为“空”,但 EL 解析器会自动将我的 ID 字段设置为“0”。

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

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

但是,这不适用于我们客户的机器。是否可以“在代码中”设置/更改此 JVM 参数。

更新:我发现有人要求这样做,但如果其他人有任何其他解决方法,我也想听听。

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

更新 2: 我无法将值从“0”改回“空”,因为我的应用程序应将“0”视为实际 ID。所以我需要在运行时知道 id 文本框是否为空。

最佳答案

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

System.setProperty("org.apache.el.parser.COERCE_TO_ZERO", "false");

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

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 ,或者当您已经在 Servlet 3.0(Tomcat 7 等)上时,使用 @WebListener注释。

关于jsf - 如何以编程方式设置 -Dorg.apache.el.parser.COERCE_TO_ZERO=false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5225013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com