当我尝试在我的文本中添加一些动态部分以供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}
未被替换,并且我在日志中没有错误。怎么了?
答案 0 :(得分:2)
<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
我无法找到真正的区别。
答案 1 :(得分:1)
消息必须位于与其名称相同的资源包中 与之相关的行动。
如果在属性文件中找不到指定的消息,那么正文 标签将用作默认消息。
使用localization guide中的搜索顺序,为您使用的语言环境创建或放置更好描述的地方的资源包。
答案 2 :(得分:0)
我猜{0}是指应该作为参数传递给getText方法的列表的第一个索引。
现在当你使用s:text并传递param时,它应该是一个列表类型变量,包含第一个索引中值为“Event01”的元素。
尝试实现相同的功能。它可能有效:)