我正在尝试让我的Controller接收JSON,但它失败了。我是Spring的新手,也是HTML浏览器开发的新手。看来我在下面的前几个方法中返回JSON OK,只是在最后一个方法中无法接收它。我完全失去了该做什么。这是我的设置。
以下是我的控制器代码的一部分:
@Controller
public class SDTM_Controller {
private SDTM_Service service;
@RequestMapping(value="/getVersions", method=RequestMethod.GET)
public @ResponseBody List<String> getVersions(){
return service.getVersions();
}
// URL: sdtm/getTemplateInfo?version=xxx
@RequestMapping(value="/getTemplateInfo", params="version", method=RequestMethod.GET)
public @ResponseBody List<DomainTemplateInfo> getTemplateInfo(@RequestParam String version){
return service.getTemplates(version);
}
@RequestMapping(value="/createDomains", method=RequestMethod.POST, consumes="application/json")
public @ResponseBody String createDomains(@RequestBody CreateDomainParams params){
// breakpoint set hit, but never reached.
}
}
方法getVersions和getTemplateInfo工作正常,它们以JSON格式返回数据。但是,永远不会调用createDomains方法。
在WEB-INF目录中,我有一个名为sdtm-servlet.xml的文件。这是内容。无论有没有这个元素,我都试过这个。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
>
<context:component-scan base-package="com.sas.hls.clc.clinicalstandards.sdtm" />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
</beans>
我的WEB-INF / web.xml文件包含以下条目:
<servlet>
<servlet-name>sdtm</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/sdtm-servlet.xml</param-value>
</init-param>
</servlet>
我使用Spring 3.2在Tomcat中运行它。我的应用程序目录的WEB-INF / lib目录包含jackson-core-asl-1.9.13.jar和jackson-mapper-asl.1.9.13.jar。
我错过了什么?
另外,另一位开发人员编写了一个小的HTML页面,用于向服务器提交请求。我们正在使用Chrome。他坚持认为JSON数据需要进行UURL编码,但是当我查看在Chrome中发送的请求信息时,请求正文不是JSON格式,它似乎被翻译成看起来像HTTP请求列表的格式参数。他应该做编码吗?浏览器或服务器端缺少调用我的控制器方法createDomain的方法。