【问题标题】:Add dynamic parts in texts在文本中添加动态部分
【发布时间】:2013-05-24 06:54:51
【问题描述】:

当我尝试在我的文本中放入一些动态部分以供 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} 没有被替换,并且我在日志中没有错误。怎么了?

【问题讨论】:

  • 对我来说看起来不错。尝试调试它。
  • 我尝试了很多事情要做。我尝试命名参数,尝试更改字符集...
  • 设置日志级别调试,看看是否有任何警告。尝试在动作类中使用getText方法。
  • 我无法更改级别。我已经发布了问题:stackoverflow.com/questions/15026408/… 但没有任何效果。我认为我是一个问题的磁铁
  • 我确实改变了级别!但我的日志中没有任何警告。

标签: java jsp properties struts2 jsp-tags


【解决方案1】:

我真的无法理解。我选择了这个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

我找不到真正的区别。

【讨论】:

  • 好的,我找到了问题!我在要解析的句子中有一个单引号。所以我把它翻了一番,现在它起作用了。我通过从句子中删除它找到了它并且它有效。谢谢大家的帮助!
  • +1。今天遇到了同样的问题,只是因为单引号没有重复,就像这样:info=Person''s name is John。附言删除您的评论(“Ok I found...”)并将其放在您的答案正文中,以便其他用户可以更好地注意到它。
【解决方案2】:

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

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

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

【讨论】:

  • 我不使用本地化。我的文字显示了,但“{0}”没有被替换。
【解决方案3】:

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

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

尝试实施相同的方法。它可能会起作用:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2011-12-10
    相关资源
    最近更新 更多