【发布时间】:2014-01-05 19:08:33
【问题描述】:
我知道 Spring MVC 可以轻松返回 Json 格式的模型;但是,我尝试了完全不同的方法来返回 CSV 格式的模型(通过杰克逊),但无法成功。
我该怎么办?
我附上我的模型代码、控制器代码和 gradle.build 如下:
非常感谢!
型号:
@JsonPropertyOrder({ "staffName", "name" })
public class Greeter
{
String name;
String staffName[];
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String[] getStaffName()
{
return staffName;
}
public void setStaffName(String[] staffName)
{
this.staffName = staffName;
}
}
控制器:
@Controller
public class GreetingController {
@RequestMapping(value = "/greeter/json", method = RequestMethod.GET)
public @ResponseBody
Greeter getGreeterInJSON() {
Greeter greeter = new Greeter();
greeter.setName("default");
greeter.setStaffName(new String[] { "ye", "lichi" });
return greeter;
}
@RequestMapping(value = "/greeter/csv", method = RequestMethod.GET, consumes = "text/csv")
public @ResponseBody
Greeter getGreeterInCSV(HttpServletResponse response) {
Greeter greeter = new Greeter();
greeter.setName("default");
greeter.setStaffName(new String[] { "ye", "lichi" });
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(Greeter.class);
ObjectWriter writer = mapper.writer(schema.withLineSeparator("\n"));
File greeterCSV = new File("greeterCSV.csv");
try {
writer.writeValue(greeterCSV, greeter);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return greeter;
}
}
build.gradle 依赖项:
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
compile ('org.springframework:spring-context:4.0.0.RELEASE')
compile("org.springframework.boot:spring-boot-starter-web:0.5.0.M6")
compile("org.thymeleaf:thymeleaf-spring3:2.0.17")
// compile "org.codehaus.jackson:jackson-mapper-asl:1.9.13"
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.0'
compile 'com.fasterxml.jackson.core:jackson-core:2.3.0'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.3.0'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.3.0'
testCompile group: 'junit', name: 'junit', version: '4.+'
testCompile "org.mockito:mockito-all:1.9.5"
}
编辑:
Tomcat 错误:
HTTP 状态 415 -
输入状态报告
消息
说明服务器拒绝了这个请求,因为请求实体的格式不受所请求方法的请求资源支持。
【问题讨论】:
-
在什么情况下不能正常工作?请提供任何堆栈跟踪等。
标签: spring spring-mvc gradle jackson