java - 将 json 对象传递给 play-framework 操作

标签 java ajax json playframework playframework-1.x

我目前使用的是 Play v1.2.3。我有一个端点,我想向其发送一个 json 对象,该对象将被反序列化为 Java 对象。所以,我有一些看起来像这样的东西:

public class UserController extends Controller {

  public static class FullName {
    public String first;
    public String last;
  }

  public static void putName( FullName name ) { ... }
}

##### routes
PUT /user/name    UserController.putName

完成后,我希望使用给定的 javascript 调用端点:

$.ajax({
  type: "PUT",
  data: { first: "Michael", last: "Bailey" },
  url: "/user/name"
});

不幸的是,通过上述设置,play 似乎不想发送整个数据对象,而是尝试填充两个参数(第一个和最后一个)。有没有办法定义端点来直接使用完整的主体,还是必须手动完成?

最佳答案

将整个输入主体转换为模型类:

public static void create(JsonObject body) {
    CaseFolder caseFolder = new Gson().fromJson(body, CaseFolder.class);
    caseFolder.user = getConnectedUser();

    if(caseFolder.validateAndSave()) {
        renderJSON(
                new JSONSerializer()
                    .exclude("*.class")
                    .exclude("user")
                    .serialize(caseFolder));
    } else 
        error();
}

此外,上面的代码获取生成的 Model 对象并将其序列化回 JSON 作为响应正文。

如果您只想访问 JSON 请求中的某些字段,可以使用:

public static void update(JsonObject body) {
    try {
        Long id = (long) body.get("id").getAsInt();
        CaseFolder cf  = CaseFolder.loadAndVerifyOwner(getConnectedUser(), id);
        cf.number = body.get("number").getAsString();
        cf.description = body.get("description").getAsString();
        if(cf.validateAndSave())
            ok();
        else
            error();
    }
    catch (NullIdException      e) {error();} 
    catch (NotFoundException    e) {notFound();} 
    catch (NotOwnerException    e) {forbidden();}
    catch (Exception            e) {e.printStackTrace(); error();}
}

关于java - 将 json 对象传递给 play-framework 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717210/

相关文章:

java - glTranslatef 不随 z 轴移动

java - Android:在不损失质量的情况下调整位图大小

jquery - 使用 jQuery 计时器通过 PHP 检查数据库是否有新记录?

php - XMLHttpRequest 未完成

java - 当不要求输入时,键入的文本显示在控制台中,我该如何阻止这种情况?

java - Hibernate 的 Criteria With Examples 和 Query 返回不同的结果

javascript - ASP.NET ajax 控件工具包 ModalPopupExtender 问题与 div 溢出

json - 解码到自定义接口(interface)

android - 在服务器端或客户端处理 Null 值?

javascript - 如何让JSON解析一个包含单引号的JSON字符串