如何以编程方式设置 -Dorg.apache.el.parser.COERCE_TO_ZERO=false
这个问题类似于:
但我对解决方案并不完全满意。上下文是相同的:我有一个需要整数值的网络表单。如果文本框留空,我希望我的 Integer 字段为“null”,但 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”更改回“null”,因为我的应用程序应将“0”视为实际 ID。所以我需要在运行时知道 id 文本框是否留空。
This question is similar to:
jsf: integer property binded to a inputtext in UI is set to zero on submit
but I am not completely satisfied with the solution. The contexts is the same: I have a web form requiring an Integer value. If the textbox is left empty, I want my Integer field to be 'null' but instead the EL Parser automatically sets my id field to '0'.
I can fix the problem by setting a JVM Parameter in my local Tomcat VM:
-Dorg.apache.el.parser.COERCE_TO_ZERO=false
However, this will not work for our client's machine. Is it possible to set/change this JVM parameter "in-code".
Update: I've found that this is being requested but if anyone else has any other workaround, I would like to hear that too.
https://issues.apache.org/bugzilla/show_bug.cgi?id=48813
Update 2: I can't change the value back from a '0' to a 'null' because my application should treat '0' as an actual id. So I need to know at runtime whether the id textbox was left empty or not.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
System#setProperty()
。但是,您需要确保在 JSF/EL 初始化之前设置此项。最好的地方是 ServletContextListener。
在
web.xml
中将其注册为
,或者当您已经使用 Servlet 3.0(Tomcat 7 等)时,使用@WebListener
代码>注释。You can set the system properties programmatically using
System#setProperty()
.However, you need to ensure that this is been set before JSF/EL ever get initialized. Best place would be a
ServletContextListener
.Register it as
<listener>
inweb.xml
, or when you're already on Servlet 3.0 (Tomcat 7 and so), with@WebListener
annotation.