当我尝试在文本中放入一些动态部分以供 Struts 2 中的
<s:text>
标签使用时,这些部分会被我定义的 params
替换。
这是我在
file.properties
中写句子的方式:
my_error=The event {0} doesn't exist
这是我尝试显示它的方式:
<s:text name="my_error">
<s:param>Event01</s:param>
</s:text>
但是在结果中,表达式
{0}
被not替换,并且日志中没有错误。怎么了?
我真的无法理解。我选择了这个 example,所以我的 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
我没能找到真正的区别。
消息必须位于与消息同名的资源包中 与之相关的操作。
如果在属性文件中找不到指定的消息,则消息正文 该标签将用作默认消息。
使用本地化指南中的搜索顺序创建或放置您使用的语言环境的资源包到更好描述的位置。
我猜 {0} 指的是应该作为参数传递给 getText 方法的列表的第一个索引。
现在,当您使用 s:text 并传递参数时,它应该是一个列表类型变量,其中包含第一个索引中值为“Event01”的元素。
尝试执行相同的操作。它可能会起作用:)