我正在使用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代码片段:

<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}"/>

最佳答案

这是一个便宜的测试:

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公共MessageFormatColumnDecorator(String模式,Locale语言环境)51 {52 this.format = new MessageFormat(模式,语言环境); 53} 58公共Object装饰( Object columnValue,PageContext pageContext,MediaTypeEnum媒体)59 {60 try 61 {62返回this.format。format(新的Object [] {columnValue}); } 63捕获(64 e)

10-08 09:41