2016-06-25 72 views
0

我有2個控制器被重定向到相同的jsp。上下文根映射和Spring MVC

//Controller1 
@Controller 
@RequestMapping("/user") 
public class UserController { 
    @RequestMapping(method=RequestMethod.GET) 
    public String defaultPage(Model model){ 
     return "home"; 
    } 
} 

//Controller2 
@Controller 
@RequestMapping("/") 
public class HomeController { 
    @RequestMapping(method=RequestMethod.GET) 
    public String HomePage(Model model){ 
     return "home"; 
    } 
}  

現在在「家」的頁面上,我有下面的腳本。

<script type="text/javascript" src="resources/js/myTutorModule.js">  
</script> 

此行如下面瀏覽器中呈現.. 控制器1 本地主機:8080 /對myApp /用戶/資源/ JS/myTutorModule.js

控制器2 本地主機:8080 /對myApp /資源/js/myTutorModule.js

所以只有第二個工作。有沒有辦法處理這與使用JSP上下文根(我打算使用角JS,並希望使用HTML - 沒有JSP)。有什麼建議麼。

回答

0

在視圖頁面中使用JSTL標記庫進行URL解析,而不是對URL進行硬編碼。 Spring有時會通過它正在瀏覽的url來定義頁面的上下文。可以說你在url app/user/addapp/user/list兩者都使用相同的js或css靜態資源。

然後,如果你指的是靜態資源一樣/resources/js/file.js,然後解決可能會有所不同的URL的根的URL在這種情況下,不同的/添加/資源/ JS /文件.js和更高版本/list/resources/js/file.js。這就是爲什麼某些視圖頁面可能無法正確顯示。

解決方法是嘗試使用一些像JSTL一樣的taglib。將您的靜態資源url定義爲<c:url>變量標籤,並在需要引用靜態或動態資源時使用它們。 <c:url>總是嘗試解析webcontent文件夾的應用程序根目錄中的url。

步驟 -

  1. 包括JSTL依賴於你的項目,如果你使用任何的構建系統。或者如果您手動構建應用程序,只需包含jstl jar文件即可。

  2. 包含了JSTL標記庫的JSP頁面要使用 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

  3. <c:url>標籤中的鏈接裁判 <script type="text/javascript" src="${tutorModuleJs}"></script>
定義URL變量 <c:url value="resources/js/myTutorModule.js" var="tutorModuleJs"/>
  • 使用變量

    你可以參考這個link瞭解更多關於JSTL標籤庫url標籤

  • +0

    C邯鄲,謝謝你的建議。我試圖不使用JSP。但是看起來除了上面的建議之外沒有別的選擇。我的意思是,我的最初想法是使用HTML + Angular js和Spring REST – Sanu