这是我的控制器方法现在的外观:
public static Result createGoal() {
JsonNode json = request().body().asJson();
ObjectMapper mapper = new ObjectMapper();
return ok(toJson(Goal.create(mapper.convertValue(json, Goal.class))));
}
这是我希望的样子:
public static Result createGoal(Goal goal) {
return ok(toJson(Goal.create(goal)));
}
我猜我的路线文件将从此更改:
POST /goals controllers.Goals.createGoal()
对此:
POST /goals controllers.Goals.createGoal(goal: Goal)
但这似乎不起作用,因为我收到“编译错误[未找到:键入目标]”
最佳答案
在路由中,您需要在Goal
类的前面加上完整的软件包名称。更多,播放!需要知道如何将查询或路径参数绑定到Goal
类,因此可以考虑实现play.mvc.PathBindable
或play.mvc.QueryStringBindable
接口。ObjectMapper
是一个昂贵的类,因此请考虑使用以下形式绑定参数:
Form.form(Goal.class).bindFromRequest();
关于java - 如何自动将传入的JSON绑定(bind)到POJO? ( Play 2.3.7-Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28182557/