Xpages 如何使用自定义转换器将数值结果格式化为字符串

Xpages 如何使用自定义转换器将数值结果格式化为字符串,xpages,Xpages,在我的表单中,我有四个应该计算的字段,结果显示在最后一个名为PaymentAmount的字段中。 建议我使用PaymentAmount的自定义转换器,因为我只需要对其他四个字段的PaymentAmount for onchange事件进行部分刷新 这工作得很好,但我的问题是结果格式错误 我的代码如下所示: getaObject() getAsString() 我尝试使用java中所有可用的方法和对象格式化结果,如: 格式(“%.2f”,值);但失败了 如果我根据区域设置10000*1,44+1,

在我的表单中,我有四个应该计算的字段,结果显示在最后一个名为PaymentAmount的字段中。 建议我使用PaymentAmount的自定义转换器,因为我只需要对其他四个字段的PaymentAmount for onchange事件进行部分刷新

这工作得很好,但我的问题是结果格式错误

我的代码如下所示:

getaObject()

getAsString()

我尝试使用java中所有可用的方法和对象格式化结果,如: 格式(“%.2f”,值);但失败了

如果我根据区域设置10000*1,44+1,2=14401,2输入值,但PaymentAmount中显示的结果是14401.2。 我希望它能根据我的区域设置14001,2显示

例如,如果在getAsString()中使用以下命令,则会出现以下错误:

try {
    var val = java.lang.String.format("%.2f",value);

} catch(e) { dBar.error(e); }

com.ibm.jscript.InterpretException: Script interpreter error, line=2, col=28: Java method 'format(string, number)' on java class 'java.lang.String' not found
我无法为getAsString()中的值获取正确的数据类型

对于看到/评论过我之前问题的您,我再次陷入了这些“本地化问题”中

请指教


/M

您可以使用以下Java代码获取您所在地区的号码:

import java.text.NumberFormat;
import java.util.Locale;
...
...
Locale swedishLocale = new Locale("sv", "SE"); // Locale for Sweden
NumberFormat nf = NumberFormat.getInstance(swedishLocale);
return nf.format(14401.2);
这将返回
14 401,2
。不要尝试将其转换为SSJS,否则在调用format(long)和format(double)时会出现
歧义错误

更新

您可以使用静态方法创建一个类,该方法在您的区域设置中格式化日期

package pkg;
import java.text.NumberFormat;
import java.util.Locale;
public class Utilities {
    public static String formatString() {
        Locale swedishLocale = new Locale("sv", "SE");
        NumberFormat nf = NumberFormat.getInstance(swedishLocale);
        return nf.format(14401.2);
    }
}
然后,您可以通过以下方式在SSJS中调用此方法:

var formattedNumber = pkg.Utilities.formatString();

您可以根据需要向方法添加参数。

好的,塔恩克斯,我现在看到我需要转移到Java类而不是SSJS。那么,我怎样才能用Java完成我的SSJs代码呢?@MikaelGrevsten:你的意思是从SSJs调用上面的Java代码?对不起,我误解了。我的代码使用xpages上的组件,我的问题是如何在java代码中使用它们
package pkg;
import java.text.NumberFormat;
import java.util.Locale;
public class Utilities {
    public static String formatString() {
        Locale swedishLocale = new Locale("sv", "SE");
        NumberFormat nf = NumberFormat.getInstance(swedishLocale);
        return nf.format(14401.2);
    }
}
var formattedNumber = pkg.Utilities.formatString();