11

Playを使っています!フレームワーク2.0と私はこのフレームワークの新人です。モデルのjson表現だけを白いhtmlページで返すにはどうすればよいですか?

私がしているのは

public static void messagesJSON(){  
   List<Message> messages = Message.all();  
   renderJSON(messages);  
}

しかし、エラーが発生します:Unitをハンドラーとして返すメソッドを使用できません

4

3 に答える 3

41

どうですか return ok(Json.toJson(Moments.all());

于 2012-06-23T14:22:31.193 に答える
12

使用している方法はPlay1.xのものですが、Play2.0では少し異なります。ドキュメントから、sayHelloJSONリクエストに返信する方法の例を次に示します

@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

于 2012-06-23T09:24:07.137 に答える
2

リストから新しいモデルを作成します。

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()
于 2013-07-23T08:58:04.587 に答える