我正在使用displaytag 1.2和fmt标签:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
我正在尝试使用displaytags format-attribute将数字格式化为货币。但是,似乎displaytag呈现的货币格式不同于fmt-numberformat。这会导致页面不一致,需要解决。
例如Displaytag格式为本地货币,例如:NOK 1,500.00
例如FMT设置本地货币格式如下:kr 1 500,00
FMT版本正确,所以我想在displaytag中使用相同的格式。
如何获取正确设置格式的displaytag?
最好没有装饰器。
这是我当前的jsp代码片段:
<fmt:formatNumber type="currency"><s:property value="reportFooter.pris" /></fmt:formatNumber>
<display:column property="pris" sortable="true" titleKey="report.header.price" format="kr {0,number,currency}"/>
最佳答案
这是一个便宜的测试:
int i = 1000;
MessageFormat mf = new MessageFormat("{0,number,currency}", new Locale("no", "NO"));
System.out.println(mf.format(new Object[] {new Integer(i)}));
打印出
kr 1 000,00
int i = 1000;
MessageFormat mf = new MessageFormat("{0,number,currency}", new Locale("en", "NO"));
System.out.println(mf.format(new Object[] {new Integer(i)}));
打印出
NOK1,000.00
您的问题是您没有正确配置displaytag的LocaleResolver。它具有挪威语言环境,但使用英语。
Displaytag的代码很好,它与我在测试代码中所做的完全相同:
50公共MessageFormatColumnDecorator(String模式,Locale语言环境)51 {52 this.format = new MessageFormat(模式,语言环境); 53} 58公共Object装饰( Object columnValue,PageContext pageContext,MediaTypeEnum媒体)59 {60 try 61 {62返回this.format。format(新的Object [] {columnValue}); } 63捕获(64 e)