2015-04-02 155 views
1

将响应设为空。RESTful - QueryParam中为空

这里是我的代码

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(); 
} 

}

这里是调用URL

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() 

} 
}); 

我正在检查,当我发这个请求参数得以通过...所以没有机会,他们的价值为零。

回答

0

所有的休息方法,即HelloWorldREST.responseMsg不应该交的,因为它没有requestBody第一。它应该是get方法。永远记住,如果你想发送数据作为查询参数(网址参数)总是使用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){ 

      } 
     }); 
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:

定义:从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. 
  • 控制器(HelloWorldREST)没有@Component@Controller注释就可以了。

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

  • 这可能有助于...

    +0

    它将如何解决问题....... ??尝试过...但仍然有同样的问题。 – sparsh610 2015-04-02 18:34:39