среда, июня 23, 2010

Композиция тайлсов в Apache Tiles 2

При использовании Apache Tiles 2 в одном веб-проекте на Spring MVC в качестве view layer встал как-то вопрос о создании компоновок внутри компоновок. То есть имеется простой глобальный лайаут: заголовок, контент, футер. Нужно в контент поместить еще одну компоновку со своим хедером, контентом и футером и в конкретных реализациях страниц менять только этот вложенный контент. Стандартно в тайлсах только в template могут быть включения других тайлсов, во всех других случаях это не пройдет. В этом случае поможет следующий подход:
1) декларируется еще одна компоновка, в которую включаются частями все возможные варианты для страниц с пустыми значениями атрибутов
2) для каждой страницы указывается реализация конкретной страницы именно для нужного атрибута

Какой минус? Главный наверно в том, что на каждую страницу нужно иметь по атрибуту во вложенной компоновке и такое же количество дополнительных деклараций в xml.

Чтобы было более понятно попробуем порисовать

   Template             Page1
|-------------|    |-------------|
|GlobalHeader |    |GlobalHeader |
|-------------|    |-------------|
|GlobalContent| <- |InnerHeader  |\
|-------------|    |InnerContent | - это будет innertemplate
|GlobalFooter |    |InnerFooter  |/
|-------------|    |-------------|
                   |GlobalFooter |
                   |-------------|

 
  
  
  
 

   
  
  
  
  
     
 

   
  
 

 
 
 



Собственно innertemplate, page1content это и есть "лишний груз", но без него никак. Такую же мысль можно прочитать в статье http://resources.mdbitz.com/2009/10/nested-tiles-an-apache-tiles-quick-guide-to-nesting-tiles/

Комментариев нет:

Мой список блогов