无法验证此方法,因为返回类型(XXXProxy)的域映射无法解析为域类型添加@SuppressWarnings(“requestfactory”)以解除。
从GWT 2.4开始,必须先验证RequestFactory接口,然后RequestFactory服务器代码或基于JVM的客户端才能使用它们。本文档介绍了验证这些接口的机制。
根据http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation
我已经完成但在Proxy和Request类中出现了一些错误。 那样:
Cannot validate this method because the domain mapping for the return type (XXXProxy) could not be resolved to a domain type Add @SuppressWarnings("requestfactory") to dismiss.
Could not find domain method similar to java.lang.Integer countUsers()。
帮助!我已经通过了在实体类中使用实现服务 但无法通过使用定位器和ServiceLocator。
mycode的:
@ServiceName(value="UserProxy.class", locator="UserServiceLocator.class")
public interface UserServiceRequest extends RequestContext {
Request<Integer> countUsers();
Request<Void> generateUsers();
Request<List<UserProxy>> findAllUsers();
InstanceRequest<UserProxy, Void> persist();
InstanceRequest<UserProxy, Void> remove();
}
@ProxyForName(value = "User.class", locator = "UserLocator.class")
public interface UserProxy extends EntityProxy {
//...setter and getter
EntityProxyId<UserProxy> stableId();
}
错误[在服务器上使用调试方法]
com.google.web.bindery.requestfactory.server.RequestFactoryServlet doPost 严重:意外的错误 java.lang.RuntimeException:必须为com.geogre.shared.DemoRfLocateRequestFactory RequestFactory类型运行RequestFactory ValidationTool 在com.google.web.bindery.requestfactory.vm.impl.Deobfuscator $ Builder.load(Deobfuscator.java:59) 在com.google.web.bindery.requestfactory.server.ResolverServiceLayer.updateDeobfuscator(ResolverServiceLayer.java:43) 在com.google.web.bindery.requestfactory.server.ResolverServiceLayer.resolveRequestFactory(ResolverServiceLayer.java:176) 在com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) 在com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) 在com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) 在com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:233) 在com.google.web.bindery.requestfactory.server.ServiceLayerCache.resolveRequestFactory(ServiceLayerCache.java:198) 在com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:207) 在com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:127) 在com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 在org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 在org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 在org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 在org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 在org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 在org.mortbay.jetty.Server.handle(Server.java:324) 在org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection $ RequestHandler.content(HttpConnection.java:843) 在org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) 在org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 在org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 在org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) 在org.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:488) Pragma:没有缓存 缓存控制:无缓存 响应标头 内容类型:text / html;字符集= ISO-8859-1 内容长度:1420
答案 0 :(得分:2)
您似乎在某种程度上错误地使用了@ServiceName注释。如果要提及类文字,请使用@Service而不是
@Service(value=MyServiceType.class, locator=MyServiceLocator.class)
如果要使用@ServiceName,则需要完整的包名称
@ServiceName(value="com.company.server.MyServiceType", locator="com.company.gwt.MyServiceLocator")
对于@ProxyFor和@ProxyForName也是如此,你似乎也错误地使用它。
在任何情况下,您都不能将RequestContext的服务指向代理 - 它应该指向User,而不是UserProxy。