6

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

你能告诉我一种发送布尔值作为响应的方法吗?如果没有,我还能做什么?提前致谢!

4

3 回答 3

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;
    }
} 

第三步:修改代码如下

@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"
]}
于 2013-08-07T06:28:38.893 回答
0

将您的 spring 版本更新为 3.1.3.release 或 higer。然后 @Responsebody 会将布尔值正确转换为 JSON。

于 2015-04-14T01:01:16.487 回答
0

生成 JSON 数据时似乎有问题,添加属性生成如下

@RequestMapping(value="/movieTheater", method=RequestMethod.GET,
            produces={MediaType.APPLICATION_JSON_VALUE})
public @ResponseBody ResponseText getCustomerInput(Map<String, Double> input) {
    //TODO:
}   
于 2013-08-07T09:29:51.513 回答