Spring mvc Spring mvc 3.2和extjs 4.1.3:我必须为所有请求映射路径定义mvc:resources映射吗?
我在使用spring mvc 3和extjs 4时遇到问题,或者更确切地说,在exjs尝试加载我的控制器或图像时出现路径问题 我的webapp的结构如下所示:Spring mvc Spring mvc 3.2和extjs 4.1.3:我必须为所有请求映射路径定义mvc:resources映射吗?,spring-mvc,extjs4,Spring Mvc,Extjs4,我在使用spring mvc 3和extjs 4时遇到问题,或者更确切地说,在exjs尝试加载我的控制器或图像时出现路径问题 我的webapp的结构如下所示: src -- webapp -- app -- extjs4.1.3 -- css -- icons -- WEB-INF -- jsp app.js <mvc:resources mapping="/css/**" location="/css/" /> <mvc:re
src
-- webapp
-- app
-- extjs4.1.3
-- css
-- icons
-- WEB-INF
-- jsp
app.js
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/app/**" location="/app/" />
<mvc:resources mapping="/extjs-4.1.3/**" location="/extjs-4.1.3/" />
<mvc:resources mapping="/app.js" location="/app.js" />
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>My jsp title</title>
<link rel="stylesheet" type="text/css" href='<c:url value="/extjs-4.1.3/resources/css/ext-all.css" />'>
<link rel="stylesheet" type="text/css" href='<c:url value="/css/myStyle.css" />'>
<script type="text/javascript" src='<c:url value="/extjs-4.1.3/ext-all-debug.js" />'></script>
<script type="text/javascript" src="<c:url value="/app.js" />"></script>
</head>
<body></body>
</html>
我有一个像这样的控制器
@RequestMapping(value = "/path/init.do", method = RequestMethod.GET)
它返回与我的WEB-INF/jsp文件夹中的jsp匹配的视图名称。此jsp加载extjs文件
视图解析程序:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
如果我写myresource.xxx时没有斜杠,它就是
localhost:8080/mywebapp/path/myresource.xxx
但是它是这样工作的,任何建议都可以跳过jstl依赖项,但它是有效的
我真正的问题是,我的app.js将加载extjs的控制器,为此它使用某种“window.location”来构造url。就我而言,它将是
localhost:8080/mywebapp/path/app/controller/myController.js
但我希望是这样
localhost:8080/mywebapp/app/controller/myController.js
我面临着同样的问题,如果我在extjs文件中放置一个图标,url将被删除
localhost:8080/myresource.xxx
localhost:8080/mywebapp/path/icons/myIcon.png
而不是
localhost:8080/mywebapp/icons/myIcon.png as expected.
我可以通过添加
<mvc:resources mapping="/path/app/**" location="/app" />
<mvc:resources mapping="/path/icons/**" location="/icons" />
但是我可以相信,每次我在Spring mvc控制器中定义一个新的requestMapping,例如“path2”,我都必须定义一个相应的mvc:resources映射。
我试图在jsp文件中定义一个全局“baseUrl”javascript变量,在app.js文件中用这个变量作为appFolder的前缀,并用这个变量作为extjs代码中使用的所有图标和内容的前缀,但这两者都是不可接受的
我错过了什么?我在谷歌上搜索了很多,找到了这个“/”url模式和mvc:resources方法(对于spring mvc webapp来说似乎非常干净),但我无法解决我的“uri”问题(我不知道requestMapping生成的路径在真正的英语中是如何调用的)
如果您能帮助我,非常感谢。如果您不能帮助我,非常感谢您抽出时间您可以尝试将所有资源(我不确定您的哪些内容是静态资源)放入: 然后定义一个映射:
<mvc:resources mapping="/resources/**" location="/resources/" />
此时,您将访问css文件夹,例如使用:
<c:url value="/resources/css/myStyle.css" />
和您的任何其他路径,或者您可以使用(但未经测试)进行尝试:
我想您将访问您的css文件夹:
<c:url value="/css/myStyle.css" />
你好,matteo,谢谢您的回答。正如我在帖子中所说,如果我将所有资源放在一个资源文件夹中,我认为这不会改变extjs将继续使用localhost:8080/mywebapp/path/resources/css/myStyle.css的事实。仍然会有错误的“路径”,但我会尝试你的解决方案嗨,塞缪尔·盖夫,我也面临同样的问题。你是如何解决这个问题的
<mvc:resources mapping="/resources/**" location="/resources/" />
<c:url value="/resources/css/myStyle.css" />
<mvc:resources mapping="/**" location="/resources/" />
<c:url value="/css/myStyle.css" />