需要返回Boolean @ResponseBody。现在得到HTTP 406错误

时间:2013-08-06 21:46:09

标签: hibernate http rest spring-mvc tomcat7

我试图在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.

请告诉我一种将布尔值作为回复发送的方法?如果没有,我还能做什么? 提前谢谢!

3 个答案:

答案 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。