1

我有一个包含三个字段的 Xpage,全部声明为 Number;名义、价格和付款金额。我想使用名义 * 价格计算 PaymentAmount。

在 SSJS onChange 我使用以下代码:

var price = getComponent("Price").getValue();

从“价格”字段中获取值。

在瑞典,我们输入数值为 #.###,## 1.234,56

如果我在我的 Xpage 中输入值 Nominal=10 和 Price=2,5 并尝试使用上述公式计算存储在 var "price" 中的值将转换为 25 并且类型为 long。

请指教

/米

4

3 回答 3

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>

它有效!

谢谢大家的输入

于 2013-01-31T23:49:56.890 回答
0

我认为“价格”是一个编辑框?如果是这样,您可以将其设置为数字字段,然后将显示格式设置为货币。货币代码将定义该数字的显示方式。

在此处输入图像描述

当您获得组件值时,它应该作为您可以使用的正常数字返回。

于 2013-01-31T13:41:35.627 回答
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事件中。

于 2013-01-31T13:41:38.307 回答