Rest Rest Service를 통해 데이터를 가져 오려고합니다. 그 때문에 나는 봄용 컨트롤러와 휴식 서비스를 제공합니다.RestyGWT JsonTypeInfo로 주석되어야 함
@Path("/user")
public interface UserAdminRestService extends RestService {
public static class Util {
private static UserAdminRestService instance;
/**
* Returns an instance of the {@link UserAdminRestService}.
* @return an instance of the UserAdminRestService.
*/
public static UserAdminRestService getUserAdminRestService() {
Resource resource = new Resource(GWT.getModuleBaseURL() + "user");
GWT.log("UserAdmin-Rescource-Path: "+resource.getPath());
if (instance == null) {
instance = GWT.create(UserAdminRestService.class);
}
((RestServiceProxy) instance).setResource(resource);
return instance;
}
}
@GET
@PATH("/test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public void getUsers(MethodCallback<List<GWTUser>> callback);
}
GWTUser는 내 사용자 엔터티를 나타냅니다.
public class GWTUser {
public interface GWTUserJED extends JsonEncoderDecoder<GWTUser> {
}
private String userId;
... // data
@Override
public String toString() {
if (GWT.isClient()) {
GWTUserJED jed = GWT.create(GWTUserJED.class);
return jed.encode(this).toString();
}
return super.toString();
}
}
그리고 내 GWT 응용 프로그램에서 호출하려고 해요 :
HashMap<String, String> header = new HashMap<String, String>();
header.put(Resource.HEADER_ACCEPT, Resource.CONTENT_TYPE_JSON+"; charset=utf-8");
Resource resourceGetUsers = new Resource("/user/test", header);
UserAdminRestService.Util.getUserAdminRestService().getUsers(new MethodCallback<List<GWTUser>>() {
@Override
public void onFailure(Method method, Throwable exception) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(Method method, List<GWTUser> response) {
// TODO Auto-generated method stub
}
});
하지만 내 응용 프로그램을 컴파일하기 위해 노력하고있어 때 오류 메시지가납니다.
--- gwt-maven-plugin:2.5.1:compile (default-cli) @ myapp-admin-gwt ---
auto discovered modules [com.myapp.admin.gwt]
Compiling module com.myapp.admin.gwt
Computing all possible rebind results for 'com.myapp.admin.rest.UserAdminRestService'
Rebinding com.myapp.admin.rest.UserAdminRestService
Invoking generator org.fusesource.restygwt.rebind.RestServiceGenerator
Generating: com.myapp.admin.rest.UserAdminRestService_Generated_RestServiceProxy_
Generating: com.google.gwt.http.client.Response_Generated_JsonEncoderDecoder_
[ERROR] Abstract classes must be annotated with JsonTypeInfo
[ERROR] Errors in 'com/myapp/admin/rest/UserAdminRestService.java'
[ERROR] Line 53: Failed to resolve 'com.myapp.admin.rest.UserAdminRestService' via deferred binding
[WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
[WARN] com.myapp.admin.rest.UserAdminRestService_Generated_RestServiceProxy_
[WARN] com.google.gwt.http.client.Response_Generated_JsonEncoderDecoder_
그래서 어떻게해야할지 모르겠습니다. 내 서비스를 위해 JsonTypeInfo가 필요합니까? 또는 내 GWTUser 추상화하고 JsonTypeInfo 추가해야합니다. 어떤 도움을 주셔서 감사합니다.
코드에 대한 몇 가지 의견 : @Path 주석을 사용하는 경우'setResource'가 필요하지 않습니다. 경로의 첫 부분을 설정하는 데 문제가 있다면'Defaults.setServiceRoot (baseUrl)'을 사용할 수 있습니다. baseUrl은 이미했던 것처럼'GWT.getHostPageBaseURL()'또는'GWT.getModuleBaseURL()'이 될 수 있습니다. 나는 또한 읽기 쉽도록 인터페이스 내부에서 클라이언트를 인스턴스화하지 않습니다. 왜 JsonEncoderDecoder를 사용하고 있습니까? 왜 당신은 getters와 세터와 함께 간단한 Pojo를 사용하지 않습니까? 여기에서 User 객체를 GWT 라이브러리에 의존하게 만듭니다. –
내가 deoding/인코딩을 시도하고있다. http://restygwt.fuseource.org/documentation/restygwt-user-guide.html – vicR
간단한 예제가 필요하다면 여기 http : /ronanquillevere.github.io/2014/03/16/gwt-rest-app.html –