【问题标题】:Velocity templates : how do I put the result of #springMessage() into a velocity variable速度模板:如何将#springMessage() 的结果放入速度变量中
【发布时间】:2011-11-01 17:05:03
【问题描述】:

我有一个来自这个陈述的价值:

#springMessage("count.french")

我需要附加到另一个字符串,例如

#set ( $theCount = '5467 ' )

那么基本上我需要这样做

#set ( $countText = $theCount+#springMessage("count.french") )

但它不喜欢那样。有谁知道如何做到这一点?

【问题讨论】:

  • 是否有错误或日志信息?
  • @Dave #set ( $countText = $theCount+#springMessage("count.french") ) 给出此错误(第 90 列是 '#' 字符在 #set 括号内的位置)- ERROR [ContainerBase] Servlet.service() for servlet familytree threw exception org.apache.velocity.exception.ParseErrorException: Encountered "#springMessage" at list.vm[line 71, column 90] Was expecting one of: "[" ... "{" ... "(" ... <WHITESPACE> ... <STRING_LITERAL> ... "true" ... "false" ... <INTEGER_LITERAL> ... <FLOATING_POINT_LITERAL> ... <IDENTIFIER> ... "{" ... <LOGICAL_NOT> ...
  • 尝试将宏结果设置为带有另一个 #set 的临时变量,并在字符串连接中使用它。
  • @DaveNewton 喜欢这样吗? #set ($test = #springMessage("blah")) 那是我实际尝试的第一件事——它也没有工作
  • @DaveNewton Velocity 1.6.4 和 VelocityTools 2.0

标签: java spring velocity template-engine


【解决方案1】:

创建一个临时变量应该像下面这样简单(注意引号):

#set ( $test = "#springMessage( $key )" )

然后,随心所欲地使用它,例如。将其连接到另一个字符串。

【讨论】:

  • 我实际上只是来这里发布我终于想通的答案。不错的工作。谢谢。如果其他人对我的使用方式感兴趣,我会这样做:#set($var = $var+" #springMessage('some.property.name')")
【解决方案2】:

尝试以下方法:

#set($dynamicProp = '#set( $countText = $theCount ' + '#springMessage(count.french' + ' )')
#evaluate($dynamicProp)

【讨论】:

  • 我无法让它为我工作。不过,我很高兴知道评估功能。感谢您的回复。
  • 没问题。如果可能的话,你会想要避免它(文档声明你应该只在必要时使用它)。我不太确定您需要做的是否允许 set 函数的简单情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
  • 2014-04-08
  • 2013-03-02
  • 1970-01-01
  • 2018-03-31
  • 2016-03-07
相关资源
最近更新 更多