显示标签格式标签货币

时间:2011-08-04 05:23:42

标签: java jsp format locale displaytag

我正在使用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}"/>

1 个答案:

答案 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)