我正在使用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-code片段:
<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}"/>
答案 0 :(得分:1)
这是一个便宜的测试:
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 public MessageFormatColumnDecorator(String pattern, Locale locale)
51 {
52 this.format = new MessageFormat(pattern, locale);
53 }
58 public Object decorate(Object columnValue, PageContext pageContext, MediaTypeEnum media)
59 {
60 try
61 {
62 return this.format.format(new Object[]{columnValue});
63 }
64 catch (IllegalArgumentException e)