Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 在GWT中指定自定义货币、数字和日期时间格式的好方法是什么?_Datetime_Gwt_Internationalization_Currency - Fatal编程技术网

Datetime 在GWT中指定自定义货币、数字和日期时间格式的好方法是什么?

Datetime 在GWT中指定自定义货币、数字和日期时间格式的好方法是什么?,datetime,gwt,internationalization,currency,Datetime,Gwt,Internationalization,Currency,我有一个GWT项目,需要手动指定货币、数字和日期时间格式。这些定制包括指定货币符号、分组分隔符、小数分隔符、负数格式等。实现这一点的最佳方法是什么 我应该使用GWT类吗?NumberFormat广泛使用GWT国际化构造,如接口等。如果因此指定自定义数字格式掩码,它仍将查看当前区域设置并使用货币符号、十进制符号和千位分隔符,正如在后期绑定和国际化的“NumberFormat”实例中指定的那样 我的问题是:你将如何做到这一点?您会重新实现NumberFormat的功能吗?您会从它派生并使用受保护的构

我有一个GWT项目,需要手动指定货币、数字和日期时间格式。这些定制包括指定货币符号、分组分隔符、小数分隔符、负数格式等。实现这一点的最佳方法是什么

我应该使用GWT类吗?NumberFormat广泛使用GWT国际化构造,如接口等。如果因此指定自定义数字格式掩码,它仍将查看当前区域设置并使用货币符号、十进制符号和千位分隔符,正如在后期绑定和国际化的“NumberFormat”实例中指定的那样

我的问题是:你将如何做到这一点?您会重新实现
NumberFormat
的功能吗?您会从它派生并使用受保护的构造函数,并将其传递到您自己创建的某种自定义
NumberConstant
s实例中吗?获取i18n NumberConstants实例,并使用它填充您自己的实例并仅覆盖您想要的内容,怎么样


您将如何处理此问题?

我已使用NumberFormat.getFormat(字符串格式)进行自定义货币格式设置(在$符号之前删除“US”)

在我的应用程序中,我将结果放入公共常量中。我已经在i18n资源包中存储了“format”参数以及所有特定于UI的字符串

public class MyNumberFormat extends NumberFormat{ private static CurrencyCodeMapConstants currencyCodeMapConstants = GWT.create(CurrencyCodeMapConstants.class); protected MyNumberFormat(String pattern, CurrencyData cdata, boolean userSuppliedPattern) { super(pattern, cdata, userSuppliedPattern); } public static NumberFormat getCurrencyFormat(String currencyCode) { return new MyNumberFormat(defaultNumberConstants.currencyPattern(), lookupCurrency(currencyCode), false); } private static CurrencyData lookupCurrency(String currencyCode) { CurrencyData currencyData = CurrencyList.get().lookup(currencyCode); Map currencyMap = currencyCodeMapConstants.currencyMap(); String code = currencyData.getCurrencyCode(); //String symbol = currencyData.getCurrencySymbol(); String symbol = currencyMap.get(currencyCode); int fractionDigits = currencyData.getDefaultFractionDigits(); String portableSymbol = currencyData.getPortableCurrencySymbol(); return toCurrencyData(code, symbol, fractionDigits, portableSymbol); } public static native CurrencyData toCurrencyData(String code, String symbol, int fractionDigits, String portableSymbol) /*-{ return [ code, symbol, fractionDigits, portableSymbol ]; }-*/; } 公共类MyNumberFormat扩展了NumberFormat{ 私有静态CurrencyCodeMapConstants CurrencyCodeMapConstants=GWT.create(CurrencyCodeMapConstants.class); 受保护的MyNumberFormat(字符串模式、CurrencyData cdata、, 布尔用户提供的模式){ 超级(模式、cdata、用户提供的模式); } 公共静态数字格式getCurrencyFormat(字符串currencyCode){ 返回新的MyNumberFormat(defaultNumberConstants.currencyPattern(), 查找货币(currencyCode),false); } 专用静态CurrencyData查找货币(字符串currencyCode){ CurrencyData CurrencyData=CurrencyList.get().lookup(currencyCode); Map currencyMap=currencyCodeMapConstants.currencyMap(); 字符串代码=currencyData.getCurrencyCode(); //String symbol=currencyData.getCurrencySymbol(); 字符串符号=currencyMap.get(currencyCode); int fractionDigits=currencyData.getDefaultFractionDigits(); String portableSymbol=currencyData.getPortableCurrencySymbol(); 返回当前数据(代码、符号、分位数、便携符号); } 公共静态本机CurrencyData到CurrencyData(字符串代码、字符串符号、整数分位数、字符串可移植符号)/*-{ 返回[code,symbol,fractionDigits,portableSymbol]; }-*/; } 我可以在GXT网格中使用

column = new ColumnConfig("precioventa", constants.modeloPrendaPrecioVenta(), 100); column.setAlignment(HorizontalAlignment.RIGHT); column.setNumberFormat(MyNumberFormat.getCurrencyFormat("PEN")); columns.add(column); column=newcolumnConfig(“precioventa”,constants.modeloprendapreciventa(),100); column.setAlignment(HorizontalAlignment.RIGHT); column.setNumberFormat(MyNumberFormat.getCurrencyFormat(“笔”)); 列。添加(列);
最后我做了类似的事情。必须有各种各样的奇怪的黑客,但它现在工作正常。你想解释一下为什么它工作,它有什么不同吗?