为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2019-11-04 10:08:59
我有一个应该输入数字的地方。我希望它显示为空。但是,当我运行程序时,默认值为0或0.00。如何将其清空?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

如果将值绑定到基元而不是包装器表示形式,则会发生这种情况。图元int始终默认为0,而图元double始终默认为0.0。您想改用Integer或Double(或BigDecimal)。


例如:


public class Bean {


    private Integer number;


    // ...

}

然后,在处理表单提交时还要考虑两件事。首先,您需要指示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>

其次,如果你使用的是Tomcat / JBoss的或使用Apache EL解析器盖下的任何服务器,那么你需要指示它不强迫null到0或0.0在案件Number类型由以下VM参数(它unintuitively处理Number类型,如果它们是原始元素):


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


查看完整回答
反对 回复 2019-11-04
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

我不同意先前给出的答案,但我认为您可能正在寻找


<h:inputText id="number" binding="#{controller.inputBox}" value="#{controller.number}" >

     <f:event type="preRenderComponent" listener="#{controller.preRenderInput}" />

</h:inputText>

在控制器内部


private double number; // getters and setters

private UIInput inputBox; // getters and setters

public void preRenderInput() {

        // if it is the first request

        if(!FacesContext.getCurrentInstance().isPostback()) {

            inputBox.setValue("");

        }

}

JSF 2.0以上


查看完整回答
反对 回复 2019-11-04
?
守着一只汪

TA贡献1872条经验 获得超3个赞

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


<h:inputText id="newname" value="#{youAction.newName}"

        style="width:130px" styleClass="form">

</h:inputText>

在您的Managed Bean Action Class中,将此字段映射为:


@ManagedBean(name="yourAction")

public class YourAction {


   private String newName;

   ...


   // Add Getter & Setter Methods

   ... 

}

通过这样做,你不会得到0或0.00在你输入字段的默认值。


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 635 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号