Java 重写ResourceHttpRequestHandler Spring MVC
我试图在SpringMVC应用程序中重写ResourceHttpRequestHandler 到目前为止,我有以下课程:Java 重写ResourceHttpRequestHandler Spring MVC,java,spring,spring-mvc,Java,Spring,Spring Mvc,我试图在SpringMVC应用程序中重写ResourceHttpRequestHandler 到目前为止,我有以下课程: @Controller public class ResourceHttpRequestHandlerReplacer extends ResourceHttpRequestHandler implements BeanFactoryPostProcessor { @Override public void handleRequest(HttpServletRequest
@Controller
public class ResourceHttpRequestHandlerReplacer extends ResourceHttpRequestHandler implements BeanFactoryPostProcessor {
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
super.handleRequest(request, response);
}
public void postProcessBeanFactory(ConfigurableListableBeanFactory factory)
throws BeansException {
String[] names = factory.getBeanNamesForType(ResourceHttpRequestHandler.class);
for (String name : names) {
BeanDefinition bd = factory.getBeanDefinition(name);
bd.setBeanClassName("com.project.controllers.ResourceHttpRequestHandlerReplacer");
}
}
}
现在它应该只调用super HandlerRequest,所以不应该有任何更改,但我收到了以下消息:
原因:java.lang.IllegalStateException:WebApplicationObjectSupport实例[ResourceHttpRequestHandler[locations=],解析器=[org.springframework.web.servlet.resource]。PathResourceResolver@16943e88]]]不在ServletContext中运行。确保对象已完全配置
我正在尝试覆盖,这样我就可以实现一些自定义逻辑来查找不是静态的,但也不是由控制器映射的资源,因为用户将能够为其CMS中的页面定义URL
有人能告诉我哪里出了问题吗
谢谢看起来您的
ResourceHttpRequestHandlerReplacer
不知道servletContext,这是很少见的,因为您是从ResourceHttpRequestHandler
扩展它的。尝试将此添加到您的类中
@Autowired
ServletContext servletContext;
看起来您的
ResourceHttpRequestHandlerReplacer
不知道servletContext,这很少见,因为您是从ResourceHttpRequestHandler
扩展它的。尝试将此添加到您的类中
@Autowired
ServletContext servletContext;
您应该拆分自己的处理程序和替换它的逻辑。将
BeanFactoryPostProcessor
的逻辑移到单独的类中,而不是移到同一类中。这些BeanFactoryPostProcessor
在进程的早期运行,在设置任何内容之前,但是由于扩展,它仍然需要一个ServletContext
。您应该拆分自己的处理程序和替换它的逻辑。将BeanFactoryPostProcessor
的逻辑移到单独的类中,而不是移到同一类中。这些BeanFactoryPostProcessor
在过程中很早就运行,在设置任何内容之前,但是由于扩展,它仍然需要ServletContext
。