Bal*_*usC 19
如果将值绑定到基元而不是其包装表示,则会发生这种情况.原语int
始终默认为0
,原语double
始终默认为0.0
.您想要使用Integer
或Double
(或BigDecimal
)代替.
例如:
public class Bean {
private Integer number;
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后在处理表单提交时还需要考虑两件事.首先,您需要指示JSF将空字符串提交的值解释为null
,否则EL仍会将空字符串强制转换为0
或0.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>
Run Code Online (Sandbox Code Playgroud)
其次,如果你使用的是Tomcat/JBoss的或使用Apache EL解析器盖下的任何服务器,那么你需要指示它不强迫null
到0
或0.0
在案件Number
类型由以下VM参数(它unintuitively处理Number
类型,如果他们是原始的):
-Dorg.apache.el.parser.COERCE_TO_ZERO=false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8657 次 |
最近记录: |