2013-08-06 35 views
5

我想在Web應用程序(REST,Spring,JPA Hibernate)中返回一個布爾值作爲HTTP響應。這裏的代碼:需要返回布爾@ResponseBody。現在得到HTTP 406錯誤

@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. 

能否請你告訴我的方式發送布爾作爲響應?如果不是,我還能做什麼? 在此先感謝!

回答

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" 
]} 
+0

非常感謝您的回覆!我嘗試了上述步驟,但我仍然收到相同的406錯誤。我所做的是,我將step1和step2添加到客戶端代碼和服務器代碼中。所以,現在在客戶端我有代碼:ResponseText rresult = restTemplate.getForObject(「http:// localhost:8081/SpringMVCMerchant/movieTheater.htm」,ResponseText.class,variable);但是我得到了406錯誤,因此,rresult.getMessage()會變爲null。您能否告訴我在這裏是否缺少任何東西,或者我誤解了您的步驟?謝謝! – kajarigd

0

似乎問題產生JSON數據,添加屬性產生這樣

@RequestMapping(value="/movieTheater", method=RequestMethod.GET, 
      produces={MediaType.APPLICATION_JSON_VALUE}) 
public @ResponseBody ResponseText getCustomerInput(Map<String, Double> input) { 
    //TODO: 
} 
+0

感謝您的回覆。我添加了「生產」,但沒有解決問題。實際上,當我添加'生產'時,服務器端的方法也沒有被訪問,這是以前發生的。任何想法? – kajarigd

+0

它應該工作。否則,在您的spring servlet.xml配置或spring webflow中會出現一些問題。請檢查spring servlet.xml是否添加了

+0

您是否在談論applicationContext.xml文件? – kajarigd

0

更新你的春季版本3.1.3.release或higer.Then的將@ResponseBody布爾正確地轉換成JSON 。

相關問題