jsf - 如何使数字输入区域最初为空而不是0或0.00?

标签 jsf input numbers zero

我有一个输入位置,应该得到一个数字。我希望它显示为空。但是,当我运行程序时,默认得到 0 或 0.00。怎么才能把它清空呢?

最佳答案

如果您将值绑定(bind)到原语而不是其包装表示,就会发生这种情况。基元 int 始终默认为 0,基元 double 始终默认为 0.0。您想使用IntegerDouble(或BigDecimal)来代替。

例如:

public class Bean {

    private Integer number;

    // ...
}

那么在处理表单提交时还有两件事需要考虑。首先,您需要指示 JSF 将提交的空字符串值解释为 null,否则 EL 仍会将空字符串强制为 00.0。这可以通过 web.xml 中的以下上下文参数来完成:

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

其次,如果您使用的是 Tomcat/JBoss 或任何在幕后使用 Apache EL 解析器的服务器,那么您需要指示它不要将 null 强制为 00.0 如果是 Number 类型,则通过以下 VM 参数(它不直观地处理 Number 类型,就好像它们是基元一样):

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

另请参阅:

关于jsf - 如何使数字输入区域最初为空而不是0或0.00?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14334188/

相关文章:

Javascript jQuery 在打开页面时隐藏字段

java - :validateRegex for not required inputText it's possible?

c - 动态分配的矩阵不允许输入

java - 未在 @RequestScoped ManagedBean 中获取请求参数

cakephp - CakePHP 时间输入中可以显示秒吗?

python - 如何在python中将double保存到文件?

java - 将 JTextField 输入限制为整数

匹配任何字符之间的正则表达式和短语

jsf - 在primefaces中动态允许一定范围的日期

javascript - 从 java 文件中的函数弹出简单的文本消息警报