2011-08-04 59 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