Я пытаюсь создать простое приложение, которое позволяет мне создавать, читать, обновлять и удалять различных пользователей. У меня есть основанный на UI взгляд, контроллер и модель, которые работают, но хотели быть более продвинутыми, чем это, и предоставить интерфейс RESTful json.Использование json with Play 2
Однако, несмотря на чтение всего, что я могу найти в документации Play 2, в группах Play 2 Google и на веб-сайте stackoverflow, я все еще не могу заставить это работать.
Я обновил свой контроллер на основе предыдущих отзывов, и теперь я полагаю, что он основан на документации.
Вот мой обновленный контроллер:
package controllers;
import models.Member;
import play.*;
import play.mvc.*;
import play.libs.Json;
import play.data.Form;
public class Api extends Controller {
/* Return member info - version to serve Json response */
public static Result member(Long id){
ObjectNode result = Json.newObject();
Member member = Member.byid(id);
result.put("id", member.id);
result.put("email", member.email);
result.put("name", member.name);
return ok(result);
}
// Create a new body parser of class Json based on the values sent in the POST
@BodyParser.Of(Json.class)
public static Result createMember() {
JsonNode json = request().body().asJson();
// Check that we have a valid email address (that's all we need!)
String email = json.findPath("email").getTextValue();
if(name == null) {
return badRequest("Missing parameter [email]");
} else {
// Use the model's createMember class now
Member.createMember(json);
return ok("Hello " + name);
}
}
....
Но когда я запускаю это, я получаю следующее сообщение об ошибке:
incompatible types [found: java.lang.Class<play.libs.Json>] [required: java.lang.Class<?extends play.mvc.BodyParser>]
In /Users/Mark/Development/EclipseWorkspace/ms-loyally/loyally/app/controllers/Api.java at line 42.
41 // Create a new body parser of class Json based on the values sent in the POST
42 @BodyParser.Of(Json.class)
43 public static Result createMember() {
44 JsonNode json = request().body().asJson();
45 // Check that we have a valid email address (that's all we need!)
46 String email = json.findPath("email").getTextValue();
Насколько я могу сказать, я скопированный из documentation поэтому я был бы признателен за любую помощь в получении этой работы.
Антони, я перечитал документацию и ваш exmaple и имеет больше смысла для меня сейчас, но я получаю сообщение об ошибке «не могу найти символ: класс Json». Я включил play.libs.json. вот мой код: \t @ BodyParser.Of (Json.класс) \t public static Результат (длинный идентификатор) { \t JsonNode json = request(). body(). asJson(); \t ObjectNode result = Json.newObject(); \t Строка name = json.findPath ("name"). GetTextValue(); \t Член-член = Member.byid (id); \t result.put ("id", member.id); \t result.put ("email", member.email); \t result.put ("name", member.name); \t return ok (результат); \t} – mstreffo
Я следовал примеру выше, но по какой-то причине я получаю следующую ошибку: «не могу найти символ: класс Json» - я импортировал play.libs.Json в свой контроллер приложения. Может ли кто-нибудь помочь? – mstreffo
Я пересмотрел свой исходный код и теперь получаю новую ошибку (см. Обновленный контент вопроса выше) – mstreffo