2011-08-04 58 views
0

进出口使用displaytag 1.2和FMT标签:Displaytag格式标签货币

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %> 

我试着使用displaytags格式属性为数字格式的货币。然而,它看起来像displaytag呈现不同于fmt-numberformat的货币格式。这会导致我的页面出现不一致,需要解决。例如, Displaytag格式如下:NOK 1,500.00 Ex。 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}"/> 
+0

你在哪里尝试过的..什么的Java API? – mKorbel

+0

我只是增加了一些关于它的信息。查看顶部的taglibs以查看哪些库。 – user829237

回答

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 = newMessageFormat (pattern, locale);
53 }

58 publicObject decorate(Object columnValue, PageContext pageContext, MediaTypeEnum media)
59 {
60 try
61 {
62 returnthis.format. format (newObject []{columnValue});
63 }
64 catch (IllegalArgumentException e)
+0

非常感谢迈克尔!但是,我如何配置displaytags LocalResolver以使用挪威语? – user829237

+0

由于您依赖于JSP和FMT,请查看[this](http://www.displaytag.org/1.2/i18n.html)。阅读“区域分辨率”一节并使用“I18nJstlAdapter”。 –

+0

完美的作品!非常感谢! – user829237