![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Всем привет.
Перед тем как начать работать с Velocity, хотелось бы узнать, насколько легко генерировать шаблоны в шаблонах. Смысл прост, я его уже в главной теме о Velocity писал. Как можно организовать основной шаблон, в котором есть кусок от новостной ленты. т.е. что-то типа этого
ну, и у newTempate какой нибудь шаблон внутри со своими инкапсулированными данными. Если вопрос прозвучал неявно, вот он: как это написать на Velocity? |
|||
|
||||
| ivg |
|
||||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
Вот так проще:
ну а если так как вы хотите(если я правильно понял) то что то вроде этого
|
||||
|
|||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 10 Всего: 40 |
Несомненно не проще. Представите, вы хотите сделать 1 рендерер на 4 разных блока новостей, как вы это делать будете? |
|||
|
||||
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Platon, Да, я об этом думал
В целом, то что нужно!!! НО, представьте, у вас есть возможность выбрасывать в трубу(pipe) страницу по мере ее генерации. А тут с таким методом придется ждать генерации всего блока, что не есть гуд... И еще раз НО,
|
|||
|
||||
| ivg |
|
||||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
Почему это? Поменять 20 букв на 25 чем ваять целый класс? Что же касается Если блоки по разметке существенно отличаются, напишу 4 шаблона. В основном шаблоне
ну и где то в коде
ну если не существенно, то логику генерации блока новостей можно реализовать в самом шаблоне (одном). Пример класса я привел, чтоб показать только идею, вообще это , а точнее редко когда гуд. |
||||
|
|||||
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Нет, ну на самом деле, меня это вполне устраивает ^_^ конечно переделаю под себя но в целом оставлю.
|
|||
|
||||
| SuperFly |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Ну, еще раз прошу прощения за беспокойство.
Попробовал я навалять в сервлете этот шаблон, делаю вызов таким образом.
Получаю вот это:
Хм... странно, путь правильный, файл действительно существут.... как же так? |
||||
|
|||||
| SuperFly |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Так, вопрос вскоре после того как был задан вопрос быстро решился.
НО, вот другая проблема:
А вот как я их задаю:
Выводит вместо запланированого слудующее:
|
||||||||
|
|||||||||
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Ну, и + еще. Есть у Velocity Инструменты.
Интересует EscapeTool
Но вот вопрос, куда этот Toolbox Configuration Example вставить? |
|||
|
||||
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
С шаблоном вопрос решился $newss являлся пакетным классом, и поэтому, видимо, его не было видно через рефлексию (или что-то другое), хотя странно.Сделал класс публичным, сработало.
А с отступным инструментом проблемы. |
|||
|
||||
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Еще вопрос возник, целесообразно ли в веб приложении делать шаблонные объекты статическими.
Т.е. фактически все шаблоны сайта болтаются в памяти.
И если такой подход целесообразен, не подскажете как можно упростить этот кусок кода? |
|||
|
||||
| ivg |
|
||||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
в файл WEB-INF/toolbox.xml но это подразумевает, что вы будете использовать org.apache.velocity.tools.view.servlet.VelocityViewServlet в качестве сервлета, посмотрите примеры, которые идут вместе с velocity-tools. Как я понимаю, это не то, что нужно. Чтобы использовать возможности EscapeTool надо просто положить в контекст экземпляр org.apache.velocity.tools.generic.EscapeTool:
Я бы не стал так делать. Этот код вызывается в момент загрузки класса NewsView, вы можете гарантировать, что к этому моменту движок Velocity уже будет инициализирован? Я нет. Если цель оптимизация скорости - то это лишнее. Velocity кэширует темплейты (при соответствующих параметрах конфигурации); Мне вот не нравится сама идея инкапсуляции шаблона в классе. Возможно для вашей задачи это единственный вариант, но как насчет этого предложения |
||||
|
|||||
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Абсолютно верно ;) и отличное пояснение что нужно!
Хороший аргумент, сразу в голову не приходит. Добавлено через 2 минуты и 31 секунду Хотяяяя, если запустить инициализацию движка в слушателе, то вполне реально ))) |
|||
|
||||
| SuperFly |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
После первого серьезного знакомства с Velocity, я понял, что этот вариант мне не подходит.
Хочу спросить, как такой подход можно организовать с помощью JSP? |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 10 Всего: 40 |
Как-то упустил из виду эту мысль. В том-то и дело, что блоки абсолютно идентичны, но инкапсулируют разные, к приеру, новости. Т.е. 3 идентичные колонки разных рубрик (Новости города, новости страны, новости мира) И тут, уж ну компонентная сущьность так и прет, а не кидаться шматками кода. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |