Jsf 如何使数字输入区最初为空,而不是0或0.00?

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

我有一个输入的地方,应该得到一个数字。我希望它显示为空。但是,当我运行我的程序时,我得到0或0.00作为默认值。如何将其设置为空?

在XHTML代码中,假设您的输入字段为:

<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  />