Velocity模板:如何将#springMessage()的结果放入Velocity变量中?

3

我有一个值是由这个语句产生的:

#springMessage("count.french")

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

#set ( $theCount = '5467 ' )

那么基本上我需要这样做。
#set ( $countText = $theCount+#springMessage("count.french") )

但它不喜欢那样。有没有人有任何想法如何实现这一点?

是否有错误或日志信息? - Dave Newton
@Dave #set($countText = $theCount+#springMessage("count.french"))出现错误(在#set括号内的第90列是'#'字符)-- ERROR [ContainerBase] Servlet.service() for servlet familytree threw exception org.apache.velocity.exception.ParseErrorException: 在list.vm[line 71, column 90]遇到"#springMessage" 期望之一: "[" ... "{" ... "(" ... <WHITESPACE> ... <STRING_LITERAL> ... "true" ... "false" ... <INTEGER_LITERAL> ... <FLOATING_POINT_LITERAL> ... <IDENTIFIER> ... "{" ... <LOGICAL_NOT> ... - Sen
尝试使用另一个#set将宏结果设置为临时变量,并在字符串连接中使用该变量。 - Dave Newton
@DaveNewton 像这样吗?#set ($test = #springMessage("blah")) 实际上,那是我尝试的第一件事 - 它也不起作用。 - Sen
@DaveNewton Velocity 1.6.4 和 VelocityTools 2.0 - Sen
2个回答

4
创建一个临时变量应该像以下这样简单(注意引号):
#set ( $test = "#springMessage( $key )" )

然后,您可以随意使用它,例如将其连接到另一个字符串中。

我其实是来这里发布答案的,我终于弄清楚了。干得好。谢谢。以下是我做的事情,以防其他人对我如何使用它感兴趣:#set($var = $var+" #springMessage('some.property.name')") - Sen

2
请尝试以下操作:
#set($dynamicProp = '#set( $countText = $theCount ' + '#springMessage(count.french' + ' )')
#evaluate($dynamicProp)

我无法让它为我工作。不过,我很高兴知道了 evaluate 函数。谢谢你的回复。 - Sen
没问题。如果可能的话,你应该避免使用它(文档中指出只有在必要时才应使用它)。我不太确定你需要做的事情是否允许使用set函数的简单情况。 - Scott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接