Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Velocity, доступ к переменой зная её имя, как ? 
:(
    Опции темы
Intorion
Дата 11.5.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.11.2006

Репутация: нет
Всего: нет



Чтото я не могу найти решение такой проблемы: как зная имя переменой получить её значение из VelocityContext ?
В velocity передаётся мап данных, строка-значение, но дело в том, что ключ в мапе генерится автоматически(в зависимости от количество доступных переводов страницы), и надо пробежаться по списку доступных языков(2х значное значение) и выдать все переменые с определёным префиксом и идентификатором языка, переменая выглядит примерно так: name.ru где ru надо изменить. В ручную вбить все значения в велосити не получится, так как кроме языка есть ещё и идентификаторы из базы(очень много)
Так просто написать $name.$language не получается. Как это сделать  ?
PM MAIL   Вверх
Stampede
Дата 12.5.2008, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 66
Всего: 144



Intorion, на наше щастье, в Velocity подобные извраты реализуются достаточно легко путем написания собственных компонент, что позволяет задействовать всю объектно-ориентированную мощу языка Java.

В твоем случае для переключения между языками вывода проще всего будет расширить класс VelocityContext так, чтобы он добавлял к имени переменной заранее определенный постфикс целевого языка, примерно вот так:

Код

public class MultilingualVelocityContext extends VelocityContext {
    public static final String LANG_ENGLISH = "en";
    public static final String LANG_RUSSIAN = "ru";
    public static final String LANG_CHINESE = "cn";
    // ...

    private String language;

    public MultilingualVelocityContext(String lang) {
        language = lang;
    }

    @Override
    public void put(String key, Object value) {
        key += '.' + language;
        super.put(key, value);
    }

    @Override
    public Object get(String key) {
        key += '.' + language;
        return super.get(key);
    }
}


Может я и не совсем понял твою задачу, и мой вариант - это не совсем то, что тебе нужно, но идею, я надеюсь, ты уловил, и подрихтовать под свои нужды теперь сможешь самостоятельно.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.