在我的表单中,我有四个应该计算的字段,结果显示在名为PaymentAmount的最后一个字段中。 我被建议为PaymentAmount使用自定义转换器,因为我只需要在PaymentAmount上对其他四个字段的onchange事件进行部分刷新。
这非常好,但我的问题是结果格式错误。
我的代码如下所示:
的getAsObject()
try {
var transCode = getComponent("TransactionCode").getValue();
var nominal = getComponent("Nominal").getValue();
var price = getComponent("Price").getValue();
var qFactor = getComponent("QuoteFactor").getValue()||1;
var fee1= getComponent("Fee1").getValue()||0;
var fee2= getComponent("Fee2").getValue()||0;
var fee3= getComponent("Fee3").getValue()||0;
var feeTotal = fee1+fee2+fee3;
var paymentAmount = nominal * (price * qFactor);
if(transCode == "Buy") {
paymentAmount+=feeTotal;
} else if(transCode == "Sell") {
paymentAmount -= feeTotal;
} else return 0;
return paymentAmount;
} catch(e){
dBar.error(e);
}
符getAsString()
return value.toString();
我尝试使用java中所有可用的方法和对象格式化结果,如: String.format(“%。2f”,value);但失败了。
如果我根据我的区域设置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
答案 0 :(得分:2)
您可以使用此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,否则会出现Ambiguity when calling format(long) and format(double)
的错误。 I have bitten by this before
<强>更新强>
您可以使用静态方法创建一个类,该方法可以在您的语言环境中格式化日期。
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();
您可以根据自己的要求为方法添加参数。