addResourceHandlers和setOrder属性

时间:2016-09-26 21:24:53

标签: spring spring-mvc

我正在使用Spring-MVC4开发一个Web应用程序,我对静态资源处理程序有一种奇怪的行为。当我设置资源处理程序如下:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}

一切正常但是当我设置以下配置时,我的webapp不处理静态资源(css和js):

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    //registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

PS:myweb我的Web初始化程序

public class MyWebInitializer extends
        AbstractAnnotationConfigDispatcherServletInitializer {



    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebAppConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] {RootAppConfig.class};
    }
}

我只有这个应用程序有此行为,在另一个应用程序中只是覆盖addResourceHandlers或configureDefaultServletHandling方法工作而没有setOrder 任何想法?

1 个答案:

答案 0 :(得分:0)

我在控制器中犯了一个错误,我写了这个:

B

我忘了指定&#34; RequestMapping&#34;值(我设置名称=&#34; / team / add / process&#34;)。这意味着&#34; excuteAddTeamForm&#34;被视为默认的处理程序方法。因此,当浏览器向服务器发送GET请求时(使用GET / resources / **),此请求由excuteAddTeamForm处理,因为ResourceHandlerRegistry的优先级低于servletDispatcher。