Angular帖子没有通过长轮询将有效负载传递给java spring

时间:2014-05-05 02:12:06

标签: java spring angularjs long-polling

我正在尝试使用post in angular传递变量到java spring。执行java post函数,但所有参数都为null。

var CreditCard = $resource("http://:host::port/" + context + "/agent/creditCard",
{host: "localhost", port: 8080 }, 
   {getTestPost2: {method:'POST', params:{charge:true, jsonPost:"1234"}}
  });
var newCard = new CreditCard({number:'0123'});
newCard.name = "Mike Smith";
newCard.$save();

我检查了我的网络状态显示200 OK。

Request Payloadview source
{number:0123, name:Mike Smith}
name: "Mike Smith"
number: "0123"

爪哇

@RequestMapping(
            value="/agent/creditCard",
            method = RequestMethod.POST,
            produces = MediaType.APPLICATION_JSON_VALUE) 
    public @ResponseBody void getTestPost2( 
                    @PathVariable String clientId, 
                    @RequestParam(value="jsonPost", required=false) String jsonPost, 
                    @RequestParam(value="charge", required=false) boolean charge,               
                    @RequestParam(value="name", required=false) String name,
                    @RequestParam(value="number", required=false) String number
            ){

        logger.debug("jsonPost " + jsonPost);
        logger.debug("name " + name);
        logger.debug("charge " + charge);
        logger.debug("number " + number);

    }

输出:

jsonPost null
name null
charge false
number null

2 个答案:

答案 0 :(得分:0)

爪哇

@RequestMapping(
            value="/agent/creditCard",
            method = RequestMethod.POST,
            params = { "jsonPost", "charge", "name", "number"}
            produces = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody
    public @ResponseBody void getTestPost2( 
                    @PathVariable String clientId, 
                    @RequestParam(value="jsonPost", required=false) String jsonPost, 
                    @RequestParam(value="charge", required=false) boolean charge,               
                    @RequestParam(value="name", required=false) String name,
                    @RequestParam(value="number", required=false) String number
            ){

        logger.debug("jsonPost " + jsonPost);
        logger.debug("name " + name);
        logger.debug("charge " + charge);
        logger.debug("number " + number);

    }

我添加了params和ResponseBody,你可以尝试一下。

答案 1 :(得分:0)

您应该编写一个CreditCard类作为参数类型。使用@RequestBody对其进行注释,以使HttpMessageConverter将JSON正文转换为所需对象。

@ResponseBody
@RequestMapping(
        value="/agent/creditCard",
        method = RequestMethod.POST,
        consumes = MediaType.APPLICATION_JSON_VALUE) 
public void postCreditCard(@RequestBody CreditCard creditCard) {
    // process data...
}