RESTful - 在Queryparam中获取null

时间:2015-04-02 18:05:35

标签: java web-services rest extjs extjs4

将响应设为null。

这是我的代码

package com.javacodegeeks.enterprise.rest.jersey;

import java.util.Date;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;

@Path("/")
public class HelloWorldREST {

@POST
@Path("/submitValue")
public Response responseMsg(@QueryParam("name") String name,@QueryParam("email") String email,@QueryParam("date") Date date) {      
String output = date+email+name;
System.out.println(output);     

return Response.status(200).entity(output).build();
}

}

以下是对网址的调用

Ext.Ajax.request({
method : 'post',
url: 'rest/submitValue/',
//success: someFn,
//failure: otherFn,
params: 
{ 
name: Ext.getCmp('name').getValue(),
email : Ext.getCmp('email').getValue(),
date : Ext.getCmp('date').getValue()

}
});

我检查过,当我发送此请求时,参数已被传递...所以没有机会它们的值为空。

2 个答案:

答案 0 :(得分:0)

您可以使用数据将数据发送到服务器:而不是params:

Ext.Ajax.request({
method : 'post',
url: 'rest/submitValue/',
//success: someFn,
//failure: otherFn,
data: 
{ 
name: Ext.getCmp('name').getValue(),
email : Ext.getCmp('email').getValue(),
date : Ext.getCmp('date').getValue()

}
});

我在这里看到的三件事

  1. 您使用的是哪个版本的jquery?如果它< 1.9.0那么您应该使用type:而不是method:
  2. 类型定义:来自jquery网站:

    type (default: 'GET')
    Type: String
    An alias for method. You should use type if you're using versions of jQuery prior to 1.9.0.
    
    1. 您的控制器(HelloWorldREST)上没有@Component@Controller注释。

    2. 从Rest角度来看,对于POST调用,您不应该使用查询参数而不是将数据作为有效负载发送。并在控制器上添加@Consumes(MediaType.APPLICATION_JSON)

    3. 这可能会有所帮助......

答案 1 :(得分:0)

首先你的休息方法,即HelloWorldREST.responseMsg不应该发布,因为它没有requestBody。它应该是get方法。永远记住你是否想要发送数据作为查询参数(url param)总是使用get,如果你想在请求体中发送数据使用POST。

现在第二件事就是你想把数据作为查询参数发送,你可以用两种方式做。确保从查询Ext.getCmp('name')。getValue()获取值,您可以在chrome开发者控制台中检查它们的值。

Ext.Ajax.request({
            url: 'rest/submitValue?name=' + Ext.getCmp('name').getValue() + '&email=' + Ext.getCmp('email').getValue() + '&date=' + Ext.getCmp('date').getValue(), 
            method: 'GET',
            success: function (response) {

            },
            failure:function(response){

            }
        });



Ext.Ajax.request({
            url: 'rest/submitValue?name=' + Ext.getCmp('name').getValue() + '&email=' + Ext.getCmp('email').getValue() + '&date=' + Ext.getCmp('date').getValue(), 
            method: 'GET',
            params: {
                name: Ext.getCmp('name').getValue(),
                email : Ext.getCmp('email').getValue(),
                date : Ext.getCmp('date').getValue()
            }
            success: function (response) {

            },
            failure:function(response){

            }
        });