Spring MVC Ajax和JSON使用自定义视图解析器以及自定义视图
-
30-09-2019 - |
题
自定义视图:
public class MyView extends AbstractView {
.... awesome stuff ...
}
控制器:
@RequestMapping(value="mylocation")
public ModelAndView dosomething() {
...
modelAndView.setView( new MyView() );
return modelAndView;
}
由于某种原因,这无效...我拥有的唯一视图解析器是以下内容:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" >
<property name="exposedContextBeanNames">
<list>
<value>spEnv</value>
</list>
</property>
</bean>
该代码不起作用,因为它试图基于...我不确定我的表单提交路径;显然没有JSP的视图,我希望实际上会返回JSON,但是由于某种原因,这不起作用,它只是试图将我转发给一些JSP,所以我猜我需要指定如何在我的XML中处理这一点...但是我已经看到了人们回来JSON的大约1000种不同的方式,而所有人都对我很困惑,我只是在寻找最简单的方式,所以我可以从中获取那里
编辑:我添加了一个很好的开始,但是它允许您在任何URL之后键入“ .json”,如果作为控制器,我不希望它会做一些非常不好的事情,所以我需要以某种方式有此视图解析器仅适用于有担保URL
解决方案
好,终于尝试了一百万个组合
@RequestMapping(value = "/test/data")
public TestFormData dostuff() {
TestFormData data = new TestFormData();
data.setName("myname");
return data;
}
然后是
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
</bean>
我真的不明白如何从这里返回对象...
但这实际上,虽然简单且非常有用,这是不可接受的,因为那时我去了网站的其他页面,然后在URL之后放置了一个任意的“ .json”,它给了一个例外,使用户使用户过多信息。关于我的应用程序,因此我基本上需要找出一种方法,只能在某些控制器上拥有这种能力...
有任何想法吗?
不隶属于 StackOverflow