Playを使っています!フレームワーク2.0と私はこのフレームワークの新人です。モデルのjson表現だけを白いhtmlページで返すにはどうすればよいですか?
私がしているのは
public static void messagesJSON(){
List<Message> messages = Message.all();
renderJSON(messages);
}
しかし、エラーが発生します:Unitをハンドラーとして返すメソッドを使用できません
Playを使っています!フレームワーク2.0と私はこのフレームワークの新人です。モデルのjson表現だけを白いhtmlページで返すにはどうすればよいですか?
私がしているのは
public static void messagesJSON(){
List<Message> messages = Message.all();
renderJSON(messages);
}
しかし、エラーが発生します:Unitをハンドラーとして返すメソッドを使用できません
どうですか
return ok(Json.toJson(Moments.all());
使用している方法はPlay1.xのものですが、Play2.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()