如何在editbox中没有默认值绑定到数据类型为double的托管bean?

时间:2013-06-24 20:30:46

标签: xpages

我有一个直接绑定到托管bean中的值的编辑框。使用一行表达式语言设置该值。 bean中的值是double类型,java默认设置为0.0。

代码是:      statusBean.adMoney

在我的xpage中,我不希望显示默认值。我希望用户在没有默认值为0.00的情况下输入值,我只想显示一个空的编辑框。

请分享您完成此任务的最佳方法。是否可以直接绑定到SSJS中的bean并仍然可以编辑?是否可以在EL中执行if语句?我最好将数据类型设为String,并在需要对其进行数学运算时转换该值吗?

1 个答案:

答案 0 :(得分:3)

将此customConverter添加到inputText字段

<xp:inputText
    id="inputText1"
    value="#{statusBean.adMoney}">
    <xp:this.converter>
        <xp:customConverter
            getAsObject='#{javascript:value=="" ? 0 : parseFloat(value)}'
            getAsString='#{javascript:value==0 ? "" : value.toString()}' />
    </xp:this.converter>
</xp:inputText>

它始终隐藏值“0.0”。该字段在开头是空的,每次用户输入“0”并提交。

<强>更新

如果“0”是有效值,那么这是一个更好的解决方案:

在bean中使用而不是double字段Double字段。由于Double是一个类,因此它可以是null。从上面调整代码看起来像这样:

<xp:inputText
    id="inputText1"
    value="#{statusBean.adMoney}">
    <xp:this.converter>
        <xp:customConverter
            getAsObject='#{javascript:value=="" ? null : parseFloat(value)}'
            getAsString='#{javascript:value==null ? "" : value.toString()}' />
    </xp:this.converter>
</xp:inputText> 

但好消息是这个customConverter行为已经成为inputText控件的标准。只要Double字段值为null,它就会在编辑框中显示为空值。当用户删除编辑框中的数字时,bean中的字段设置为null

如果我们使用Double字段而不是double字段,那么我们只需要此代码:

<xp:inputText
    id="inputText1"
    value="#{statusBean.adMoney}">
</xp:inputText>