我试图在Web应用程序(REST,Spring,JPA Hibernate)中将布尔值作为HTTP响应返回。这是代码:
@ResponseBody
@RequestMapping(value="/movieTheater", method=RequestMethod.GET)
public boolean getCustomerInput(Map<String, Double> input) {
return transactionService.addTransaction(input);
}
现在,我想这不允许我返回一个布尔值,但期待别的东西。当我尝试在浏览器中访问以下内容时:
http://localhost:8081/SpringMVCMerchant/movieTheater.htm
我收到以下错误:
HTTP Status 406 -
type Status report
message
description The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
请告诉我一种将布尔值作为回复发送的方法?如果没有,我还能做什么? 提前谢谢!
答案 0 :(得分:1)
第1步:创建枚举
public enum ResponseStatus {
SUCCESS("true"),
FAILED("false");
private final String status;
private ResponseStatus(String status) {
this.status = status;
}
public String getStatus() {
return status;
}
}
第2步:创建一个用于返回响应详细信息的类
public class ResponseText {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
第3步:修改代码如下
@ResponseBody
@RequestMapping(value="/movieTheater", method=RequestMethod.GET)
public ResponseText getCustomerInput(Map<String, Double> input) {
ResponseText result = new ResponseText();
if(transactionService.addTransaction(input))
result.setMessage(ResponseStatus.SUCCESS.getStatus());
else
result.setMessage(ResponseStatus.FAILED.getStatus());
return result;
}
现在您可以像这样获得输出JSON
{[
message:"true"
]}
答案 1 :(得分:0)
似乎在生成JSON数据时出现问题,添加属性就像这样生成
@RequestMapping(value="/movieTheater", method=RequestMethod.GET,
produces={MediaType.APPLICATION_JSON_VALUE})
public @ResponseBody ResponseText getCustomerInput(Map<String, Double> input) {
//TODO:
}
答案 2 :(得分:0)
将你的spring版本更新到3.1.3.release或更高版本。然后@Responsebody会将布尔值正确转换为JSON。