让Spring MVC应用程序不假设根上下文

时间:2017-04-25 22:18:16

标签: javascript html spring spring-mvc

我必须使用Spring MVC 3.1.0来获取现有应用程序,它在许多地方假设根上下文名称是什么。我正在更改根上下文名称,但我真的不想对根上下文进行硬编码,我希望该应用能够正常工作。显然,我仍然需要更改这些引用,但如果我稍后再次更改根上下文,我希望它能够正常工作。

参考文献分布在几个不同的位置:

  • 一种执行' return new ModelAndView("redirect:/OriginalAppName/home");'
  • 的控制器方法
  • css文件中的引用,例如" background: url(/OriginalAppName/resources/images/chng-pwd-backg.png)"
  • 内联javascript代码,例如" ... action =" / OriginalAppName / account"
  • 像&#39; <a href="/OriginalAppName/home" ...&#39;
  • 这样的主播

解决这个问题的合理策略是什么?

1 个答案:

答案 0 :(得分:0)

您的问题由3部分组成:

1。关于redirect:视图名称前缀,Spring documentation说:

  

逻辑视图名称,例如redirect:/ myapp / some / resource将相对于当前Servlet上下文重定向

因此,您的案例的查看名称"redirect:/home"应该可以正常运作。

2。可移植性的静态Web资源(JS / CSS)应该在任何地方使用相对链接:

background: url(./resources/images/chng-pwd-backg.png)

甚至可能:

background: url(../resources/images/chng-pwd-backg.png)

取决于包含的网页网址。

3. 动态网络资源(HTML / JSP等),可能使用与静态资源相同的方式:

<a href="./home" ...

或者可以使用内置的<spring:url>代码:

<a href='<spring:url url="/home">' ...

<c:url>代码:

<a href='<c:url value="/home">' ...