2011-08-04 11 views
0

イム:Displaytag形式のタグ通貨

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

イム通貨に番号をフォーマットするdisplaytagsフォーマット属性を使用しようとしています。しかし、それはdisplaytagがfmt-numberformatとは異なる通貨形式をレンダリングするようです。これは私のページに矛盾を引き起こし、解決する必要があります。 Ex。ディスプレイタッグでは、このように現地通貨をフォーマットしています: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

? – mKorbel

+0

もう少し詳しい情報を追加しました。一番上にあるtaglibを見て、どのライブラリを見てください。 – 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のコードは大丈夫です、私は私のテストコードにそうであるように、それは正確に同じことを:あなたはそれを試してみました..何のJava API

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

マイケルありがとう!しかし、どのように表示タグLocalResolverをノルウェー語に設定するのですか? – user829237

+0

あなたはJSPとFMTに頼っているので、[this](http://www.displaytag.org/1.2/i18n.html)を見てください。セクション「ロケール解決」を読み、 'I18nJstlAdapter'を使用してください。 –

+0

完璧に動作します!どうもありがとう! – user829237