我有点问题。我需要在此拦截器中调用每个请求的postHandle方法:
public class DiMenuInterceptor extends HandlerInterceptorAdapter {
@Autowired
private IDiCategoryService categoryService;
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
modelAndView.addObject("category", categoryService.getCategoryInTree());
}
}
所以我将这一行放入servlet配置中,一切正常。
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:interceptors-ref="menuInterceptor" />
<bean id="menuInterceptor" class="cz.cosi.DiMenuInterceptor" />
但是现在我必须更改配置和使用 <mvc:interceptors>
通过这种配置,我在postHandle方法中的modelAndView上得到了一系列空指针异常,因为每个请求多次调用postHandle方法。
<mvc:interceptors>
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptors>
使用此配置,它可以工作,但仅适用于请求serverAdress /任何东西。对于请求serverAdress /任何东西/东西不调用postHandle。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*" />
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
servlet配置的一部分
<mvc:annotation-driven />
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:interceptors>
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptors>
<tx:jta-transaction-manager />
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
看来,问题可能与资源有关,因为没有正确加载图像,样式和javascript例外。没有mvc:resources可以正常工作,但这不是解决方案。
我的问题是,如何正确配置DiMenuInterceptor <mvc:interceptors>
。非常感谢你的建议。
stack:
2019-04-14 09:56:02,487 [http-8080-3] DEBUG (FilterChainProxy.java:195) ? Converted URL to lowercase, from: '/images/core/users/super_admin.png'; to: '/images/core/users/super_admin.png'
2019-04-14 09:56:02,533 [http-8080-3] DEBUG (FilterChainProxy.java:202) ? Candidate is: '/images/core/users/super_admin.png'; pattern is /images/**; matched=true
2019-04-14 09:56:02,533 [http-8080-3] DEBUG (FilterChainProxy.java:158) ? /images/core/users/super_admin.png has an empty filter list
14.4.2011 9:56:02 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet spring threw exception
java.lang.NullPointerException
at cz.cosi.DiMenuInterceptor.postHandle(DiMenuInterceptor.java:41)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:163)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:595)
也许我找到了解决方案,但这绝对不是最好的。目前看来,这是可行的。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*" />
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/search/**" />
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/context/**" />
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/member/**" />
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
你需要指定你的路径包括子路径:/**"
不是/*
。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="cz.cosi.DiMenuInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
问题内容: 我正在尝试使用spring-security-oauth2和jwt配置授权服务器。 我的主要: 我的安全性配置: 我的身份验证服务器配置: 和一个访问当前用户的Web服务: 现在,如果我发出这样的帖子请求: 我有这样的回应: 如果我使用访问令牌来调用我的用户WS: 我得到一个空响应。 但是,如果我在“安全性”配置中输入以下内容: 然后,我获得适当的响应。 有人可以解释一下这是怎么回事吗
这是/可能重复: WebSocket-InvalidStateError:连接尚未建立。 我正在实行通知制度。并希望在用户登录时初始化套接字连接,并向他显示他的通知,以及如果发生了一些事件。 我的代码片段如下所示。 websocket.js: 网络选项卡
我无法正确获取此持久性文件...我在书中找不到任何更多的资料可供我参考。我用的是MySQL数据库。 编辑 严重:部署应用程序[VaadEntertainapp]时出现异常 Severe:org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:发现以元素“provider”开头的内容无效。应为“{”http://java.sun.com/xml/ns
我写了一个django网络应用程序,现在我需要把它翻译成英语。我遵循了文档,但我不断收到这个奇怪的错误: 在/i18n/setlang/settings处配置不正确。数据库配置不正确。请提供ENGINE值。有关详细信息,请查看设置文档。请求方法:POST请求URL:http://192.92.149.139:8000/i18n/setlang/Django版本:2.0.3异常类型:配置不正确的异常
使用Spring Boot 2.0.0.rc2。 和junit-platform-surefire-provider配置在maven-surefire-pluginV2.19.1中 我似乎找不出合适的注释来让我的测试类读取src/Test/resources/application-test.yml中的配置。 我读过https://junit.org/junit5/docs/current/use
我遵循了Spring工具套件3.6.4中Spring Boot Support中的说明,最终得到了一个Eclipse项目,该项目有几个问题。第一个问题是,当我右键单击包含“main”entry方法的类并选择“Run As”选项时,我得到的唯一条目是fallback“Run Configurations…”方法我既没有选择将其作为“Spring Boot应用程序”运行,也没有选择将其作为“Java应