0

在关注了 struts 2 网页和大量示例之后,我的应用程序仍然不会从 struts.properties 文件中获取值。

我正在尝试这样做,以便为某些值提供货币类型格式:

<s:property value="getText('struts.money.format',{value})" />

我的 struts.properties 文件位于 WEB-INF/classes 下,因此可见,具有以下单行

struts.money.format= {0,number,\u00A4##0.00}

我将字符串struts.money.format打印到屏幕上。如果我更改 getText 调用的第一个参数,我输入的新字符串也将被打印出来,而不是发生真正的查找。

如果我这样做,<s:property value="value" />我会得到一个正确的号码。如果我在 getText 调用中删除第二个参数,我希望在属性文件中取回赋值的右侧,但我得到了同样的结果struts.money.format

我将 Tomcat 6 与 Struts 2.2.1.1 一起使用。我可能遗漏了这个谜题的其他部分吗?

4

1 回答 1

2

所以在我的 struts.xml 文件中,我把这一行

    <constant name="struts.custom.i18n.resources" value="struts" />

它需要知道我正在尝试使用 struts.properties 文件。我假设默认情况下,一个名为 struts.properties 的文件位于位置链中以查找诸如此类的常量。仅当您将其命名为其他名称时,您才需要指定它。尽管它位于 Struts 2 文档推荐的 WEB-INF/classes 中,但它只是没有在该文件中查找。

编辑

对于它的价值,我还必须像这样修改我的 struts 文本标签

<s:property value="getText('struts.money.format',{@java.lang.Double@valueOf(value)})" />

实际上,value它应该是一个 BigDecimal,但在这里的视图级别被视为 java.lang.String。问题是某些 String 对象具有指数格式(如 1.642E07 或类似的东西),并且 struts 格式化程序无法处理指数格式。valueOf 消除了这种指数格式

于 2012-04-25T18:35:22.617 回答