Jsf 如何使数字输入区最初为空,而不是0或0.00?
我有一个输入的地方,应该得到一个数字。我希望它显示为空。但是,当我运行我的程序时,我得到0或0.00作为默认值。如何将其设置为空?在XHTML代码中,假设您的输入字段为:Jsf 如何使数字输入区最初为空,而不是0或0.00?,jsf,input,numbers,zero,Jsf,Input,Numbers,Zero,我有一个输入的地方,应该得到一个数字。我希望它显示为空。但是,当我运行我的程序时,我得到0或0.00作为默认值。如何将其设置为空?在XHTML代码中,假设您的输入字段为: <h:inputText id="newname" value="#{youAction.newName}" style="width:130px" styleClass="form"> </h:inputText> @ManagedBean(name="yourAction") pu
<h:inputText id="newname" value="#{youAction.newName}"
style="width:130px" styleClass="form">
</h:inputText>
@ManagedBean(name="yourAction")
public class YourAction {
private String newName;
...
// Add Getter & Setter Methods
...
}
通过这种方式,您不会在输入字段中获得0或0.00作为默认值 如果将值绑定到基元而不是它的包装表示形式,则会发生这种情况。原语
int
始终默认为0
,原语double
始终默认为0.0
。您希望改用整数
或双精度
(或大十进制
)
例如:
公共类Bean{
私有整数;
// ...
}
在处理表单提交时,还有两件事需要考虑。首先,您需要指示JSF将提交的空字符串值解释为null
,否则EL仍将强制空字符串为0
或0.0
。这可以通过web.xml
中的以下上下文参数完成:
javax.faces.explait_EMPTY_STRING_SUBMITTED_VALUES_为_NULL
真的
第二,如果您使用的是Tomcat/JBoss或任何一台服务器都在幕后使用ApacheEL解析器,那么您需要指示它不要通过下面的VM参数将null
强制为0
或0.0
类型(如果Number
类型是原语,则不直接处理Number
类型):
-Dorg.apache.el.parser.concure\u TO\u ZERO=false
另见:
- 我并不反对前面给出的答案,但我认为您可能正在寻找
<h:inputText id="number" binding="#{controller.inputBox}" value="#{controller.number}" >
<f:event type="preRenderComponent" listener="#{controller.preRenderInput}" />
</h:inputText>
JSF 2.0+您可以在primefaces扩展中使用inputNumber,而不是inputText。 像这样
<pe:inputNumber />
如果映射到对象类型(整型、长型、双精度)并在默认情况下将其设置为null,则应能正常工作。它们已映射并为null,但仍在继续。我的问题是关于数值,我对字符串没有任何问题。但是我仍然有整数和双精度的问题。@GaryLeather-当你想使用该值时,为什么不将该值转换为你想要的类型。嗨@BalusC,我需要将VM参数添加到哪个文件以及它在哪里?@Erick:它需要进入服务器的java
launch命令。它不一定在文件中,这取决于您启动服务器的方式。
<pe:inputNumber />