2013-08-06 2 views
5

Ich versuche, einen Boolean als HTTP-Antwort in einer Webanwendung (REST, Spring, JPA Hibernate) zurückzugeben. Hier ist der Code:Muss Boolean @ResponseBody zurückgegeben werden. Nun bekomme ich HTTP 406 Fehler

@ResponseBody 
@RequestMapping(value="/movieTheater", method=RequestMethod.GET) 
public boolean getCustomerInput(Map<String, Double> input) { 
    return transactionService.addTransaction(input); 
} 

Nun, ich denke, das ist nicht erlaubt mir einen boolean zurück, aber etwas anderes erwartet. Wenn ich versuche, in den Browser für den Zugriff auf die folgenden:

http://localhost:8081/SpringMVCMerchant/movieTheater.htm 

ich die folgende Fehlermeldung erhalten:

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. 

Können Sie mir bitte sagen, einen Weg boolean als Antwort zu schicken? Wenn nicht, was kann ich noch tun? Vielen Dank im Voraus!

Antwort

1

Schritt 1: Erstellen eines ENUM

public enum ResponseStatus { 
    SUCCESS("true"), 
    FAILED("false"); 
    private final String status; 

    private ResponseStatus(String status) { 
     this.status = status; 
    } 

    public String getStatus() { 
     return status; 
    } 
} 

Schritt 2:

public class ResponseText { 
    private String message; 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 
} 

Schritt 3 die Antwortdetails eine Klasse erstellen zu der Suche nach ändern des Codes als

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

folgende Jetzt können Sie JSON wie folgt ausgeben

{[ 
    message:"true" 
]} 
+0

Vielen Dank für Ihre Antwort! Ich habe die obigen Schritte versucht, aber ich bekomme immer noch den gleichen 406 Fehler. Was ich getan habe, ist, dass ich sowohl den Client-Code als auch den Server-Code Schritt1 und Schritt2 hinzugefügt habe. Also, jetzt auf der Client-Seite habe ich den Code: ResponseText rresult = restTemplate.getForObject ("http: // localhost: 8081/SpringMVCMerchant/movieTheater.htm", ResponseText.class, Variable); Aber ich bekomme den Fehler 406 und daher kommt rresult.getMessage() als null. Kannst du mir bitte sagen, ob mir etwas fehlt oder ich deine Schritte missverstanden habe? Vielen Dank! – kajarigd

0

Scheint Ausgabe in JSON-Daten erzeugen, fügen Sie die Eigenschaft wie dieser

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

Danke für Ihre Antwort. Ich habe "produziert" hinzugefügt, aber es hat das Problem nicht gelöst. In der Tat, wenn ich "products" hinzufüge, wird auch auf die Methode auf der Serverseite nicht zugegriffen, was vorher passierte. Irgendeine Idee? – kajarigd

+0

Es sollte funktionieren. Ansonsten gibt es ein Problem in Ihrer spring servlet.xml-Konfiguration oder Spring Webflow. überprüfen Sie bitte die Feder servlet.xml, ob Sie die

+0

hinzugefügt haben Sprechen Sie über die Datei applicationContext.xml? – kajarigd

0

Aktualisieren Sie Ihre Version von Frühjahr produziert 3.1.3.release oder higer.Then die @Responsebody die boolean zu JSON konvertieren richtig .

Verwandte Themen