【问题标题】:Displaytag format tag currency显示标签格式标签货币
【发布时间】:2011-08-04 05:23:41
【问题描述】:

我正在使用 displaytag 1.2 和 fmt 标签:

<%@ 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 前任。 FMT 像这样格式化本地货币:kr 1 500,00

FMT 版本是正确的,所以我想在 displaytag 中使用相同的格式。 如何让 displaytag 以正确的方式格式化?

最好没有装饰器。

这是我当前的 jsp-code sn-ps:

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

【问题讨论】:

  • 你在哪里试过那个..,什么Java API??
  • 我刚刚添加了一些关于它的更多信息。查看顶部的 taglibs 以了解哪些库。

标签: java jsp format locale displaytag


【解决方案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 = MessageFormat(pattern, locale);
53 }

58 public Object decorate(Object columnValue , PageContext pageContext, MediaTypeEnum media)
59 {
60 试试
61 {
62 返回 this.format.format(new Object[]{columnValue});
63 }
64 抓住 (IllegalArgumentExceptione)

【讨论】:

  • 非常感谢迈克尔!但是如何将显示标签 LocalResolver 配置为具有挪威语?
  • 由于您依赖 JSP 和 FMT,请查看 this。阅读“区域设置解析”部分并使用I18nJstlAdapter
  • 完美运行!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多