我有一个包含三个字段的Xpage,声明了所有数字;名义,价格和PaymentAmount。 我想使用Nominal * Price来计算PaymentAmount。
在SSJS onChange中我使用以下代码:
var price = getComponent("Price").getValue();
从“价格”字段中获取值。
在瑞典,我们输入数字值为#。###,## 1.234,56
如果我在我的Xpage中输入值Nominal = 10和Price = 2,5并尝试使用上面提到的公式计算,则存储在var“price”中的值将转换为25并且类型为long。
请咨询
/ M
答案 0 :(得分:2)
我是个白痴,不幸的是。
这样做了:
<inputText value="#{document1.Price}" id="Price" required="true" size="10">
<this.validators>
<validateRequired message="Price is required">
</validateRequired>
</this.validators>
<this.converter>
<convertNumber type="number" locale="sv">
</convertNumber>**
</this.converter>
</inputText>
它有效!
感谢大家的输入
答案 1 :(得分:0)
我认为“Price”是一个编辑框?如果是这样,您可以将其设置为数字字段,然后将格式显示为货币。货币代码将定义该数字的显示方式。
当您获得组件值时,它应该以您可以使用的正常数字返回。
答案 2 :(得分:0)
getComponent
获取UI组件值,这就是为什么它不一定反映将保存的数据类型(在UI中,所有内容都是字符串)。这也是获得价值的缓慢方式。
请尝试使用datasourcename.getItemValueDouble("itemname")
。请注意,您需要在Form上使用字段名称,而不是组件名称。
关于数字格式,请确保您的djConfig语言环境是瑞典语,可能是se-se
。在芬兰,我看起来像这样:
<script type="text/javascript" src="/xsp/.ibmxspres/dojoroot-1.6.1/dojo/dojo.js" djConfig="locale: 'fi-fi', parseOnLoad: true"></script>
它应该使用浏览器区域设置。要在SSJS中强制执行此操作,您可以执行以下操作:
context.setLocaleString("se-SE");
beforePageLoad 事件中的。