1

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

代码是:statusBean.adMoney

在我的 xpage 中,我不希望显示默认值。我希望用户输入一个值而不是默认值 0.00,我只想显示一个空的编辑框。

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

4

1 回答 1

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> 
于 2013-06-24T21:09:14.747 回答