我有一个直接绑定到托管bean中的值的编辑框。使用一行表达式语言设置该值。 bean中的值是double类型,java默认设置为0.0。
代码是: statusBean.adMoney
在我的xpage中,我不希望显示默认值。我希望用户在没有默认值为0.00的情况下输入值,我只想显示一个空的编辑框。
请分享您完成此任务的最佳方法。是否可以直接绑定到SSJS中的bean并仍然可以编辑?是否可以在EL中执行if语句?我最好将数据类型设为String,并在需要对其进行数学运算时转换该值吗?
答案 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>