2017-04-09 5 views
0

Ich sende Daten per Postanforderung von der Webseite an den Server.Ratpack kann den Wert vom Nachrichtentext nicht abrufen

$("#1, #2, #3, #4").on("click", function(){ 
      console.log($(this).attr("id")); 
       var xhr = new XMLHttpRequest(); 
       xhr.open("POST", "SimpleServlet.html", true); 
       xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
       xhr.send(JSON.stringify({"product_id": $(this).attr("id"), "quantity" : 1 })); 
      }); 

Mit Hilfe dieses Javascript. Ich bin sicher, dass es an den Server gesendet wird und es dort ankommt.

Auf dem Server versuche ich die Werte abrufen, die ich in die Daten geschrieben habe.

.post("SimpleServlet.html", ctx -> 
        { 
         final Response response = ctx.getResponse(); 

         System.out.println("Getting result"); 

         final ExecResult<String> result = ExecHarness.yieldSingle(c -> 
           ctx.parse(String.class)); 


         System.out.println("Getting value"); 
         response.send("webshop.html"); 
        }) 

ich leider fanden keine Anleitung, wie die String-Werte entsprechend abzurufen.

Ich versuchte das oben genannte, aber das bleibt für immer in der ExecHarness stecken.

Ich möchte erhalten die Werte erhalten. Nehmen Sie sie, um ein neues Java-Objekt zu erstellen, und antworten Sie dann mit dem JSON eines anderen Java-Objekts zurück. (zweites Objekt ist abhängig von vorherigen Objektdaten)

Antwort

1

Ratpack's API reference Statt ExecHarness so etwas wie dies versuchen:

ctx.getRequest().getBody().then({ data -> 
    String text = data.getText(); 
    // parse text with whatever you use, e.g. Jackson 

    System.out.println("Getting value"); 
    response.send("webshop.html"); 
}) 

Sie können es zu verketten, z.B.

context.getRequest().getBody().flatMap({ data -> 
    //parse data and get id 
    //call to async service who returns Promise 
    return service.getReport(id).map((String report) -> { 
     // do some staff 
    }) 
}).then({ 
    //final staff before send response 
    //import static ratpack.jackson.Jackson.json; 
    context.getResponse().send(json(result).toString()); 
}) 
Verwandte Themen