我试图从4.1工作中获取新的资源版本。来自
http://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources
和
我似乎无法正确注册ResourceUrlEncodingFilter。你是如何做到这一点所以它在jsp中获取网址? 我正在使用javaconfig和我的扩展WebMvcConfigurerAdapter - > addResourceHandlers方法我有
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/META-INF/resources/static/")
.resourceChain(true)
.addResolver(
new VersionResourceResolver()
.addFixedVersionStrategy("1.1.0", "/**/*.js")
.addContentVersionStrategy("/**"));
这似乎有效,因为我可以在控制器中获得更改
@Autowired
private ResourceUrlProvider resourceUrlProvider;
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String homePub() {
logger.debug("js = '{}'", this.resourceUrlProvider.getForLookupPath("/static/test.js"));
logger.debug("css = '{}'", this.resourceUrlProvider.getForLookupPath("/static/test.css"));
return "test";
}
将输出
DEBUG TestController - js = '/static/1.1.0/test.js'
DEBUG TestController - css = '/static/styles/test-4c517674c05348b2aa87420e7adc420b.css'
最初jsp中的网址被忽略,所以我添加了
container.addFilter("resourceUrlEncodingFilter", ResourceUrlEncodingFilter.class).addMappingForUrlPatterns(
null, true, "/*");
我的WebApplicationInitializer实现
这给出了以下例外
java.lang.IllegalStateException: Failed to determine lookup path: /test/static/test.js
所以至少我知道过滤器被调用它只是没有拿起我的处理程序 我尝试为/ test / static / **添加资源处理程序,但这没有帮助。 将isMatchAfter更改为false会停止异常,但似乎不会调用过滤器。
jsp问题很简单
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<c:url value='/static/test.js'/>
所以我猜这不是如何设置ResourceUrlEncodingFilter,应该如何添加
答案 0 :(得分:1)
似乎有一个错误
https://jira.spring.io/browse/SPR-12279
您需要添加
@Override
public HandlerMapping resourceHandlerMapping() {
SimpleUrlHandlerMapping handlerMapping = (SimpleUrlHandlerMapping) super.resourceHandlerMapping();
handlerMapping.setInterceptors(this.getInterceptors());
return handlerMapping;
}
并扩展WebMvcConfigurationSupport而不是WebMvcConfigurerAdapter
还有其他问题
https://jira.spring.io/browse/SPR-12281
并且securityFilter会导致问题,但上面的内容应该可以使基础工作
更新:4.1.2版本解决了这些问题