2013-01-23 46 views
1

Header部分(Apache Tiles屬性)由多個視圖共享。它有一個表單,當頁面加載時需要一個對象,並在對象丟失時發出抱怨。此刻,我將對象放置在模型中,並在每次創建一個繼承此佈局的視圖時使用控制器將其傳遞給視圖。Apache Tile和Spring模型對象

這種方法似乎相當繁瑣,因爲我在控制器上重複了幾行。我希望能夠添加一次並完成。

我對Apache Tiles不太熟悉,可能有一個我不知道的簡單解決方案。

尋找一些有用的提示。

謝謝

回答

0

您可以使用HandlerInterceptorAdapter類和postHandle方法來實現類似的功能。通過cons,你將需要定義一個規則來幫助你知道什麼時候需要將對象添加到模型中,它可以是URL中的路徑或其他東西,這取決於你的模板是如何組織的。這裏是一個攔截器的例子,它正在做類似的事情。

攔截defenition:

<mvc:interceptors> 
    <bean class="your.package.HeaderModelInterceptor"/> 
</mvc:interceptors> 

攔截器類:

public class HeaderModelInterceptor extends HandlerInterceptorAdapter { 

    @Override 
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 
     ModelAndView modelAndView) throws Exception { 

     // Check if you need to add the object 
     if (Your rule) { 
      modelAndView.addObject("headerObject", headerObject); 
     } 

     super.postHandle(request, response, handler, modelAndView); 
    } 
} 
0

你有幾個選擇來做到這一點。在我頭頂可以。

  1. 使用Tiles視圖編制,simple example here
  2. 使用像Spring攔截器或AOP的機制自動將您的對象添加到模型中,而不是到處重複碼

這真的取決於的性質您要添加的對象以及它需要多少上下文。

+0

我解決了這個使用Servlet過濾器一次。就我而言,我是從數據庫中預加載菜單,並簡單地將它們推入會話中。 – CodeChimp