gpt4 book ai didi

spring-mvc - Spring MVC 资源版本控制添加 ResourceUrlEncodingFilter

转载 作者:行者123 更新时间:2023-12-02 03:31:45 27 4
gpt4 key购买 nike

我正在尝试从 4.1 工作中获取新的资源版本。从

http://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources



http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-config-static-resources

我似乎无法正确注册 ResourceUrlEncodingFilter。你是怎么做到的,所以它在jsp中获取url?
我正在使用 javaconfig 并在我的扩展 WebMvcConfigurerAdapter --> addResourceHandlers 方法中使用

registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/META-INF/resources/static/")
.resourceChain(true)
.addResolver(
new VersionResourceResolver()
.addFixedVersionStrategy("1.1.0", "/**/*.js")
.addContentVersionStrategy("/**"));

这似乎有效,因为我可以在 Controller 中进行更改
@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 中的 url 被忽略,所以我添加了
container.addFilter("resourceUrlEncodingFilter",  ResourceUrlEncodingFilter.class).addMappingForUrlPatterns(
null, true, "/*");

我对 WebApplicationInitializer 的实现

这给出了下面的异常(exception)
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,应该如何添加

最佳答案

好像有bug

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 的发布解决了这些问题

关于spring-mvc - Spring MVC 资源版本控制添加 ResourceUrlEncodingFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276342/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com