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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Макросы Velocity, кэшируются? 
:(
    Опции темы
uprinter
Дата 8.11.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 19.2.2009
Где: Saint-Petersburg

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



Есть библиотека Velocity, подключается, как и положено, с помощью velocity.properties:
Код

velocimacro.library = fragments.vm


Там есть общий шаблон странички:
Код

#macro(page $title $content)
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
        <title>$title</title>
    </head>
    <body>
        $content
    </body>
</html>
#end


Есть отдельные шаблоны для формирования страниц:
Код

## page1.vm

#macro(content)
<h1>Page 1</h1>
Content, content...
#end

#page("Page 1", "#content()")


Код

## page2.vm

#macro(content)
<h1>Page 2/h1>
Content, content...
#end

#page("Page 2", "#content()")



Проблема в следующем: при переходе от одной страницы к другой и вызовах, соответственно, page1.vm или page2.vm содержимое "#content()", похоже, кэшируется, то есть перешли к page2.vm, но контент в ней остался от page1.vm. Собственно, я нашел два варианта решения этой проблемы: называть по разному макросы, скажем #macro(content1) и #macro(content2) или задать параметр:
Код

velocimacro.permissions.allow.inline.to.replace.global = true


Похоже на то, что первый макрос после вызова становится глобальным, а второй его не может заместить. Данная опция отменяет такой поведение.

Вопросы:
1. Правильно ли я понимаю принцип "кэширования" макросов?
2. Есть ли способ без макросов собрать контент в переменную и запихнуть в общий шаблон страницы? В документации мне такой способ найти не удалось...

Спасибо!
PM MAIL ICQ Skype   Вверх
polosatij
  Дата 18.11.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

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




выноси макросы в отдельный файл. файл подключишь через конфигурацию velocity. вот тут пример:

http://velocity.apache.org/tools/devel/view/

-------------

velocimacro.library = /WEB-INF/VM_global_library.vm





--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0600 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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