2013-07-24 59 views
0

我試圖在Spring MVC應用程序中處理多個Web模塊。 假設我有兩個模塊:財務模塊和倉儲模塊。 他們有自己的業務流程,但是有一些常見的流程,如LDAP認證和搜索......以及它們之間的依賴關係。 所以我想,讓他們在一個單一的Web應用程序,有兩個不同的requestmappings:/金融/ *和倉庫/ *在Spring MVC應用程序中處理多個Web模塊

我的問題是類似這樣的: How should I build a modularized enterprise application which must use Spring and JPA?

所以我的第一種方法是創建一個枚舉爲存儲模塊列表:

public enum WebApplicationModule { 
FINANCE("/finance", "Finance Module"), 
WAREHOUSE("/warehouse", "Warehouse Module");  

private final String moduleTitle; 
private final String moduleRequestMapping; 

WebApplicationModule(String moduleRequestMapping, String moduleTitle) { 
    this.moduleRequestMapping = moduleRequestMapping; 
    this.moduleTitle = moduleTitle; 
} 

public String getModuleTitle() { 
    return moduleTitle; 
} 
public String getModuleRequestMapping() { 
    return moduleRequestMapping; 
} 

} 

然後創建兩個抽象控制器:

@Controller 
@RequestMapping(value = {WebApplicationModule.FINANCE.getModuleRequestMapping()}) 
public abstract class FinanceAbstractController { 
private final String VIEWS_FOLDER = "finance"; 
} 

@Controller 
@RequestMapping(value = {WebApplicationModule.WAREHOUSE.getModuleRequestMapping()}) 
public abstract class WarehouseAbstractController { 
private final String VIEWS_FOLDER = "warehouse"; 
} 

在模塊中的所有控制器將擴展它們。

目標是動態處理RequestMappings:/ finance/*和warehouse/*。 我也希望能夠動態顯示菜單(ul li ahref)來選擇網頁標題上的模塊。

我知道這不起作用,因爲RequestMapping的值必須是一個常數值,這就是爲什麼我要求你這樣做的最好方法。

謝謝

回答

0

是否要提供共享請求映射前綴?像所有以「/ finance/..」開頭的FinanceControllers地圖網址一樣。

如何在第一個地方使用不同的DispatcherServlet?

<servlet> 
    <servlet-name>finance</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>finance</servlet-name> 
    <url-pattern>/finance/*</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>warehouse</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>warehouse</servlet-name> 
    <url-pattern>/warehouse/*</url-pattern> 
</servlet-mapping> 
相關問題