Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重写ResourceHttpRequestHandler Spring MVC_Java_Spring_Spring Mvc - Fatal编程技术网

Java 重写ResourceHttpRequestHandler Spring MVC

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

我试图在SpringMVC应用程序中重写ResourceHttpRequestHandler

到目前为止,我有以下课程:

@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