2014年11月17日 星期一

Tiles3.0.5 中的ViewPreparer在Spring MVC的使用

之前在找能從DB中抓資料出來組成網站的主選單的辦法…
先看了tiles管網上的用法 也找到好幾個用Tiles View Preparer+Spring MVC的辦法…但發現好像用的Tiles的版本是不太一樣的…原本很開心的以為有找到解法…但實做了以後才發現跟現有的method上有差異…也試了好一段時間…最後才確定用法…在這邊說明一下:

環境:
Tiles 3.0.5
Spring 4.1.1

在Spring 的bean file中的TilesConfigurer 加上preparerFactoryClass,相關設定如下:

 
    
        
            
                /WEB-INF/defaulttemplate.xml
                        
        
        
     

讓TilesConfigurer可以知道我們要使用Preparer的class
再來就是將navigation的部分拉出來,並加上我們寫好的NavigationViewPreparer ViewPreparer API
 

    
        
        
        
        
    
    
    


NavigationViewPreparer 的內容如下:
 
package syscom.web.controllers.preparer;

public class NavigationViewPreparer implements ViewPreparer{
 
 @Autowired 
 private INavigationService navigationServices;

 @Override
 public void execute(Request tilesContext, AttributeContext attributeContext) {
  attributeContext.putAttribute("navigationlist", new Attribute(navigationServices.getAllNavigation()));
 }

}

這邊要說明一個比較特別的地方…
用上面的putAttribute放入的部分,是無法透過${}取出Attribute的,需透過tags-tiles-extras來取得tiles相關的Attribute...
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>


    
                 
  • ${nav.title}

  • tilesx:useAttribute的用法

    沒有留言:

    張貼留言