Играть! Framework ответ возвращение JSON

Я использую Play! Framework 2.0, и я новичок в этой области. Как я могу вернуть только json-представление моей модели на белой странице html?

Что я делаю, это

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

Но я получаю ошибку: не могу использовать метод, возвращающий Unit в качестве обработчика

Ответ 1

Используемый вами метод - от 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.

Ответ 2

Как насчет return ok(Json.toJson(Moments.all());

Ответ 3

Создайте новую модель из списка:

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);

Это отобразит объект JSON на localhost: 9000/getBusinesses после добавления маршрута:

GET      /getBusinesses   controllers.Application.getBusinesses()