6

当我尝试在我的文本中放入一些动态部分以供<s:text>Struts 2 中的标记使用时,这些部分被params我定义的替换。

这是我在我的句子中写句子的方式file.properties

my_error=The event {0} doesn't exist

这是我尝试显示它的方式:

<s:text name="my_error">
    <s:param>Event01</s:param>
</s:text>

但结果,表达式{0}没有被替换,我在日志中没有错误。怎么了?

4

3 回答 3

2

我真的无法理解。我选择了这个例子,所以我在我的 jsp 文件中有这个:

<s:text name="msg.error">
    <s:param >Event01</s:param>
</s:text>
<br />
<s:text name="name.msg.param" >
    <s:param >mkyong</s:param>
</s:text>

这在我的 .properties 中:

msg.error = This event doesn't exist: {0}
name.msg.param = This is a message from properties file - param : {0}

但结果是:

This event does not exist: {0}
This is a message from properties file - param : mkyong

我无法找到真正的区别。

于 2013-06-03T06:49:14.050 回答
1

消息必须位于与其关联的操作同名的资源包中。

如果在属性文件中找不到指定的消息,则标记的主体将用作默认消息。

为您使用的语言环境创建资源包或将资源包放到使用本地化指南中的搜索顺序更好地描述的地方。

于 2013-05-29T09:34:30.877 回答
0

我猜 {0} 是指应该作为参数传递给 getText 方法的列表的第一个索引。

现在,当您使用 s:text 并传递参数时,它应该是一个列表类型变量,其中包含第一个索引中值为“Event01”的元素。

尝试实现相同的。它可能工作:)

于 2013-05-29T07:43:59.623 回答