2015-05-06 2 views
0

Я хочу использовать ниже тег в JavaScript для чтения ResourceBundle значенияИспользования «<г:. Теге сообщения в JavaScript

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

шагов [я] .text не является статичным и продолжает меняться, поэтому мне нужно передать значение «шагов [я] .text» в ResourceBundle

Если я использую,

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 файле, который способен считывать пакет ресурсов.

+1

Является ли 'step [i] .text' чем-то в вашей модели на стороне сервера или на какой-то стороне клиента? Тег сообщения является серверным и не будет работать с клиентскими значениями для параметра кода. –

+0

Да шаги [i] .text поступает с сервера, но на стороне клиента я получаю это правильно. потому что если я не выполняю локализацию, то я правильно вижу это значение на своей странице. –

ответ

0

Проблема заключается в том, что при рендеринге gsp grails преобразует g: сообщение в соответствующее сообщение, но оно не преобразует $ {steps [i] .text} в соответствующую метку.

Может быть, вы можете решить эту проблему с помощью арг тега сообщения:

.gsp

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

.messages.properties

a.b.key = whatever {0} means 
+0

шагов [i] .text - полностью неизвестное значение. Это можно прочитать только во время выполнения. шаги [i] .text поступают из бэкэнда. Я могу сделать предупреждение (шаги [i] .text), и значение становится правильно. Вот почему я не могу использовать

0

PERH ApS это может работать для вас:

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

Я предполагаю, что здесь, что «шаги» является переменной на стороне сервера, а не один Javascript.