使用&#34; <g:message tag =“”in =“”javascript =“”

时间:2015-05-06 13:23:05

标签: java javascript grails internationalization gsp

=“”

我想使用下面的标签javascript阅读resourcebundle值。

var myText = "<g:message code='${steps[i].text}' />" ;

steps [i] .text不是静态的,并且不断改变这就是为什么我需要传递&#34; steps [i] .text&#34;的值。资源捆绑。

如果我使用,

var myText = "<g:message code='a.b.key' />" ;

然后它工作正常。 但对于下面的行,它会给出如下错误:

var myText = "<g:message code='${steps[i].text}' />" ;

org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:render>: Error executing tag <r:script>: Error evaluating expression [steps[i].text] on line [393]: Cannot get property 'null' on null object

我的代码是.gsp文件,它能够读取资源包。

2 个答案:

答案 0 :(得分:0)

问题在于,当您渲染gsp grails时,会在相应的消息中转换g:消息,但它不会转换相应标签中的$ {steps [i] .text}。

也许你可以使用消息标记的args解决问题:

  

.gsp

<g:message code='a.b.key' args="[i]" />
  

.messages.properties

a.b.key = whatever {0} means

答案 1 :(得分:0)

也许这对你有用:

var myText = "${g.message(code:steps[i].text)}";

我在这里假设'steps'是服务器端变量而不是javascript。