학습을 위해 Restygwt를 사용하는 방법에 대한 간단한 데모 프로젝트를 설정하고 싶습니다. 나는이 튜토리얼을 따라 : https://ronanquillevere.github.io/2014/03/16/gwt-rest-app.html 지금까지 가지고이 내 클라이언트 : 나는 버튼GWT - Restygwt - 응답이 유효한 JSON 문서가 아닙니다.
@Override
public void searchBook(String isbn) {
clientContext.getBookStoreClient().getBook(isbn, new MethodCallback<List<Book>>() {
@Override
public void onFailure(Method method, Throwable exception) {
Window.alert("Failure");
GWT.log(exception.getMessage());
GWT.log(stackTraceToString(exception));
}
@Override
public void onSuccess(Method method, List<Book> response) {
for (Book book : response) {
Window.alert(book.getIsbn() + " " + book.getAuthor());
}
}
});
}
private String stackTraceToString(Throwable e) {
StringBuilder sb = new StringBuilder();
for (StackTraceElement element : e.getStackTrace()) {
sb.append(element.toString());
sb.append("\n");
}
return sb.toString();
}
을 클릭했을 때 방법 searchBook (문자열 ISBN)가 트리거됩니다 내 SearchPresenter에서
내 BookstoreClient은 다음과 같습니다
를@Path("/api/bookstore/books")
public interface BookstoreClient extends RestService{
@GET
public void getBooks(MethodCallback<List<Book>> callback);
@GET
@Path("/{isbn}")
public void getBook(@PathParam("isbn") String isbn, MethodCallback<List<Book>> callback);
}
내 서버에 BookResource :
@Path("books")
public class BookResource {
Map<String, Book> books;
public BookResource() {
books = new HashMap<>();
Book book1 = new Book("1", "Max Mustermann");
books.put(book1.getIsbn(), book1);
Book book2 = new Book("2", "Erika mustermann");
books.put(book2.getIsbn(), book2);
}
@GET
@Produces("application/json")
public Collection<Book> getBooks() {
return books.values();
}
@GET
@Path("/{isbn}")
@Produces("application/json")
public Book getBook(@PathParam("isbn") String isbn) {
return books.get(isbn);
}
}
그리고 우우 예외 내 공유 패키지
public class Book {
private final String isbn;
private final String author;
@JsonCreator
public Book(@JsonProperty("isbn")String isbn, @JsonProperty("author")String author) {
this.isbn = isbn;
this.author = author;
}
public String getIsbn() {
return isbn;
}
public String getAuthor() {
return author;
}
}
에 케이하지만 내 GUI의 버튼을 클릭하면 내가 onFailure에 뛰어 얻을 :
응답이 유효한 JSON 문서 아니었다를
Unknown.Throwable_4_g$([email protected]:4312)
Unknown.Exception_4_g$([email protected]:4550)
Unknown.RuntimeException_4_g$([email protected]:4597)
Unknown.new ResponseFormatException_2_g$([email protected]:51000)
Unknown.parseResult_2_g$([email protected]:33367)
Unknown.parseResult_1_g$([email protected]:33355)
Unknown.onResponseReceived_0_g$([email protected]:33312)
Unknown.fireOnResponseReceived_0_g$([email protected]:14339)
Unknown.onReadyStateChange_0_g$([email protected]:14647)
Unknown.<anonymous>([email protected]:30998)
Unknown.apply_0_g$([email protected]:5498)
Unknown.entry0_0_g$([email protected]:5554)
Unknown.<anonymous>([email protected]:5534)
하지만 내가 URL로 이동하면 :
http://127.0.0.1:8888/api/bookstore/books
나는 내 브라우저에 보여 다음 얻을
[{"isbn":"1","author":"Max Mustermann"},{"isbn":"2","author":"Erika mustermann"}]
내가 뭔가를 놓친 건가 또는 RestService의 구현에 망쳐? 미리 말씀해 주셔서 감사합니다.
내 문제를 해결해 주셔서 감사합니다. – KilledByCheese