我正在使用 Play!框架 2.0,我是这个框架的新手。如何在白色 html 页面中只返回我的模型的 json 表示?
我正在做的是
public static void messagesJSON(){
List<Message> messages = Message.all();
renderJSON(messages);
}
但我得到错误:不能使用返回 Unit 作为处理程序的方法
我正在使用 Play!框架 2.0,我是这个框架的新手。如何在白色 html 页面中只返回我的模型的 json 表示?
我正在做的是
public static void messagesJSON(){
List<Message> messages = Message.all();
renderJSON(messages);
}
但我得到错误:不能使用返回 Unit 作为处理程序的方法
怎么样
return ok(Json.toJson(Moments.all());
您使用的方法来自 Play 1.x,在 Play 2.0 中略有不同。从文档中,这是一个如何回复sayHello
JSON 请求的示例
@BodyParser.Of(Json.class)
public static Result sayHello() {
ObjectNode result = Json.newObject();
String name = json.findPath("name").getTextValue();
if(name == null) {
result.put("status", "KO");
result.put("message", "Missing parameter [name]");
return badRequest(result);
} else {
result.put("status", "OK");
result.put("message", "Hello " + name);
return ok(result);
}
}
您所问的重要部分是return ok(result)
返回 JSON ObjectNode
。
从您的列表中创建一个新模型:
public static Result getBusinesses(){
List<Business> businesses = new Model.Finder(String.class, Business.class).all();
return ok(Json.toJson(businesses)); //displays JSON object on empty page
}
在 Business.java 类中,我有一个静态变量:
public static Finder<Long,Business> find = new Finder(Long.class, Business.class);
添加路由后,这将在 localhost:9000/getBusinesses 上显示 JSON 对象:
GET /getBusinesses controllers.Application.getBusinesses()