Java 当控制器重定向时,我无法通过SpringMVC获取json数据
我想从SpringMVC返回json和html spring配置:(当控制器未重定向时,它是正常的!)Java 当控制器重定向时,我无法通过SpringMVC获取json数据,java,json,spring-mvc,Java,Json,Spring Mvc,我想从SpringMVC返回json和html spring配置:(当控制器未重定向时,它是正常的!) 当ModelAndView的视图在我的控制器中被重定向时,如何获取json数据?重定向不起作用,重定向意味着重定向后向服务器发出新的请求。您可以让它使用重定向属性,并将它们设置到flash地图中。但总的来说似乎过于复杂,为什么不让“用户/测试”页面调用另一个返回JSON响应的控制器。@M.Deinum抱歉,也许我的描述有误。我的意思是,当控制器重定向时,我无法获取JSON数据。(我已经解决了我
当ModelAndView的视图在我的控制器中被重定向时,如何获取json数据?重定向不起作用,重定向意味着重定向后向服务器发出新的请求。您可以让它使用
重定向属性
,并将它们设置到flash地图中。但总的来说似乎过于复杂,为什么不让“用户/测试”页面调用另一个返回JSON响应的控制器。@M.Deinum抱歉,也许我的描述有误。我的意思是,当控制器重定向时,我无法获取JSON数据。(我已经解决了我的问题)我已经理解了,我的评论仍然适用。@M.Deinum我只是想减少代码的重复和冗余,(控制器返回html,同时也可能被ajax调用),2个方法(1个返回视图名称,另一个返回json)是如何冗余的?您只需将该方法一分为二,只需更改JSP即可。
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="ignoreAcceptHeader" value="true" />
<property name="defaultContentType" value="text/html" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="favorParameter" value="false" />
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp">
</property>
</bean>
</list>
</property>
<!-- ............... -->
@RequestMapping(value="test")
public ModelAndView test(HttpServletRequest request,HttpServletResponse response){
Result result = new Result(/*.......*/);
//return
{
//====>it is OK,when i call http://localhsot/test.json
ModelAndView mv = new ModelAndView("user/test","result",result);
return mv; //
}
{
//=====> it is also redirect,when i call http://localhsot/test.json (response statues 302!)
ModelAndView mv = new ModelAndView("redirect:user/test""result",result);
return mv;
}
}