встроенное необработанное сообщение i18n тимелина в javascript - PullRequest
0 голосов
/ 07 марта 2020

У меня есть файл сообщений .properties, содержащий эту строку:

BROWSER.MESSAGES={\r\n  "W_MH_B_TITLE" \: "Hello World"\r\n}

Я пытаюсь вставить его на странице как

<script th:inline="javascript">
    var i18nMessages = /*[(#{BROWSER.MESSAGES})]*/{};
</script>

В результате я получаю

Причина: java .lang.NumberFormatException: Для входной строки: "" W_MH_B_TITLE ":" Hello World ""

Я хочу просто скопировать значение в javascipr. Без какого-либо форматирования.

Thymeleaf 3.0, без Spring

ОБНОВЛЕНИЕ: я обошел эту проблему, настроив StandardMessageResolver (у меня один и тот же ключ в каждом шаблоне):

// Once the messages map has been retrieved, just use it         
final String message = messagesForLocaleForTemplate.get(key);    
if (message != null) {                                           
    if("BROWSER.MESSAGES".equals(key)) {                         
        return message;                                          
    } else {                                                     
        return formatMessage(locale, message, messageParameters);
    }                                                            
}                                                                

// Will try the next resolver (if any)                           

1 Ответ

0 голосов
/ 07 марта 2020

Решение Thymeleaf 3, отличное от Spring:

Измените запись в файле свойств на эту (поместите сообщение в одинарные кавычки):

BROWSER.MESSAGES='{\r\n  "W_MH_B_TITLE" \: "Hello World"\r\n}'

Это приведет к следующему:

<script>
  var i18nMessages = {
    "W_MH_B_TITLE" : "Hello World"
  };
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...