GWT Restlet参数始终为空

时间:2012-07-08 18:55:12

标签: google-app-engine gwt restlet

我对REST和RESTlet都是全新的 - 我昨晚得到了一切和沟通但我今天早上发现的是我传递到服务器的所有内容总是变为空。

就像一个示例应用程序我有以下 - 一个用户Objectify实体(id,emailAddress和版本),和一个RESTUserProxy对象(id,emailAddress) - 我最初不确定我是否可以通过Objectify实体和在无法看到任何东西后将其切换到代理对象 - 如果我能以这种方式工作,我会尝试将其切换回来

前端如下:

public interface RESTUserResourceProxy extends ClientProxy {

  @Get
  public void find(String emailAddress, Result<RESTUserProxy> callback);

  @Put
  public void persist(RESTUserProxy user, Result<Void> callback);

  @Delete
  public void delete(RESTUserProxy user, Result<Void> callback);
}

后端代码如下(这个目前非常难看 - 我只是试图看到一些内容并输入大量的系统内容而感到有些沮丧)

public class RESTUserServerResource extends ServerResource implements RESTUserResource {

  private final UserDao userDao;

  public RESTUserServerResource() {
    System.out.println("CREATED USER RESOURCE IMPL");
    userDao = new UserDao();
  }

  @Override
  @Get
  public RESTUserProxy find() {
    System.out.println("reference = " + getReference());
    Form queryParams = getReference().getQueryAsForm();
    System.out.println("query params = " + queryParams);
    System.out.println("query = " + getQuery());
    System.out.println("query string = " + getQuery().getQueryString());
    String searchQuery = (String) getRequest().getAttributes().get("searchQuery");
    System.out.println("search query = " + searchQuery) ;
    return null;
//    if (emailAddress == null) {
//      return null;
//    }
//    System.out.println("user resource impl find [" + emailAddress + "]");
//    final User user = userDao.find(emailAddress.getText());
//    if (user != null) {
//      System.out.println("found user ");
//      return new RESTUserProxy(user.getId(), user.getEmailAddress());
//    } else {
//      System.out.println("found absolutely nothing");
//      return null;
//    }
  }

  @Override
  @Put
  public void persist(RESTUserProxy userProxy) {
    System.out.println("user proxy = " + userProxy);
    if (userProxy == null) {
      return;
    }
    final User user = userDao.find(userProxy.getId());
    user.setEmailAddress(userProxy.getEmailAddress());
    user.setId(userProxy.getId());
    userDao.persist(user);
  }

  @Override
  @Delete
  public void delete(RESTUserProxy userProxy) {
    final User user = userDao.find(userProxy.getId());
    userDao.delete(user);
  }
}

我遇到的问题是,通过null得到的满足 - 这里的许多其他答案都说得到查询来获取参数 - 但这里的查询是空的

下面的

是调用find和persist的输出

reference = http://127.0.0.1:8888/users/123
query params = []
query = []
query string = 
search query = null

我确定我在这里做了一些愚蠢的事情我只是不知道如何继续进行。任何关于我做错的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是由于GAE不支持分块编码。请参阅此处的解决方法 http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html#dsy303-restlet_gwt