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: Enum を作成する

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

Seems issue in produce JSON data, add the property produces like this

@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 に答える
0

spring のバージョンを 3.1.3.release 以降に更新します。その後、@Responsebody はブール値を JSON に正しく変換します。

于 2015-04-14T01:01:16.487 に答える