2016-06-25 71 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