2014-10-11 3 views
0

Из документации специальная переменная .locale извлекает строковое представление локали.Freemarker - как получить экземпляр локали?

Но как можно получить Locale в пределах разметки freemarker?

Если нет встроенной функции, я должен передать Locale шаблону и передать его каждому макросу.

Упрощенный пример:

Java Bean.class

public Locale getLocale(); 
public String getFoo(Locale locale); 

Freemarker

Невозможно использовать строку локаль!

<#setting locale="${bean.getLocale()}"> 
${bean.getFoo(.locale)} 

ответ

0

Я добавил .locale_object в 2.3.21 для этого (должен быть выпущен 2014-10-12).

В противном случае, если вы положили Locale в модель данных, зачем вам передавать это для каждого макроса? Макросы видят переменные модели данных.

+0

хорошие новости :) Извините, я не добавил его в режим данных. Просто установите его в верхней части разметки. – djmj

+1

Макросы также могут видеть эту переменную. Даже если вы используете '# import'-s и, следовательно, несколько пространств имен, вы можете использовать' <#global myVar = myValue> '. – ddekany

+0

Обновлено до новой версии и полезно знать функцию глобальных переменных, Freemarker очень мощный! – djmj

0

Freemarker's .locale - это строка, не являющаяся локалью.

Не знаете, что делает ваш getFoo(), но, может быть, вам нужен локаль? Этот ответ поможет вам построить его, если вам это нужно: How to get Locale from its String representation in Java?