初学 Spring MVC 想试着写个 REST api 返回一个 json , Spring 版本 4.2.4 ,按照官方文档以下配置
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"/>
<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/jsps/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
</list>
</property>
</bean>
Controller 的部分
@Controller
@RequestMapping("/")
public class HelloController {
@RequestMapping("/hello")
public String helloMvc() {
return "hello";
}
@RequestMapping("/json")
public @ResponseBody Person getPerson() {
return new Person(123, "Tom", "aaa");
}
}
在 tomcat 上运行结果, jsp 能正常显示, json 却报以下错误
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Unrecognized Type: [null]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
看意思是参数错误,但并不知道是为什么。。完整 demo 见 https://github.com/sparetire/demo/
望各位大大解答,感谢!