В настоящее время я создаю webapp используя Spring MVC, где представление отображается с помощью Apache Tiles. Недавно я добавил Spring Security.Ошибка при разрешении/извлечении json-данных после обновления версии Spring
Я работал с весной версии 3.0.7.RELEASE. И все сработало хорошо. Поскольку мне нужна была лучшая безопасность, мне пришлось обновить ее до более высоких версий. Поэтому я повысил уровень безопасности до . 3.1.2.RELEASE и все остальное в той же версии.
После этого У меня проблема с извлечением данных json от моего контроллера. Часть моей страницы отображается, но другая часть, которая вызывает метод в контроллере и должна вернуть данные json назад, не отображает (она должна заполнять таблицу данными, которые она получает). Он бросает эту ошибку:
javax.servlet.ServletException: Не удалось разрешить представление с именем «Пример/getJsonData/параметра» в сервлет с именем «» appServlet
Я звоню этот метод каждые 5с из мой JSP, используя JQuery метод GET, как это:
function update() {
$.getJSON('./example/getJsonData/parameter', function(data) {
//do some things
});
};
И когда я проверяю консоль, чтобы увидеть, что происходит, я вижу это:
GET http://localhost:8080/myapp/example/getJsonData/parameter - 500 (Internal Server Error)
Вот как resloving URLs выглядеть в моем сервлетах контексте:
<beans:bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass">
<beans:value>
org.springframework.web.servlet.view.tiles2.TilesView
</beans:value>
</beans:property>
</beans:bean>
<beans:bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>/WEB-INF/tiles/general.xml</beans:value>
</beans:list>
</beans:property>
</beans:bean>
А вот как метод в мой контроллер выглядит
@RequestMapping(value = "getJsonData/{parameter}", method = RequestMethod.GET)
public @ResponseBody
Model getJsonData(HttpSession httpSession, Model model, @PathVariable(value = "parameter") String parameter) {
model.addAttribute("parameter", true);
//doing something here
return model;
}
Давайте просто скажем, я попробовал, добавив производит = "приложения/JSON »и ничего не изменил. Итак, моя Q, что мне нужно изменить в конфигурационных файлах после обновления версии, чтобы продолжить использовать приложение таким же образом? Или у меня есть способ продолжать использовать мое приложение так же, как раньше? Чтобы быть ясным, все работало до обновления версий Spring.
Вот полный StackTrace для ошибки:
27.05.2013. 12:52:57 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet appServlet threw exception
javax.servlet.ServletException: Could not resolve view with name 'example/getJsonData/parameter' in servlet with name 'appServlet'
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1190)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
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.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
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:857)
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:662)
Имейте больше веры в проблемы: D В настоящее время сталкивается с чем-то похожим, но пытаюсь вернуть json. –
Хахаха, вот почему я написал: «Вы никогда не знаете ', потому что вы действительно никогда не знаете: DI надеется, что это поможет вам или, по крайней мере, даст вам некоторый намек на решение вашей проблемы. – masster
На самом деле, я вырезал из коробки преобразование и пошел с моим собственным преобразованием, теперь все работает :) –