我正在尝试使用GWT和RequestFactory构建一个简单的(只读)Web应用程序,我无法弄清楚如何摆脱以下警告:
warning: The domain type DDisplay is not default-instantiable. Calling RequestContext.create(DDisplayProxy.class) will cause a server error.
Add @SuppressWarnings("requestfactory") to dismiss.
问题是,我已将@SuppressWarnings(“requestfactory”)粘贴到每个可能相关的类,接口和方法之上,但我仍然收到此消息。
由于我的requestfactory是只读的,我不打算调用RequestContext.create,所以这不是一个问题。摆脱警告(没有创建DDisplay定位器类)会很好。
在服务器端,我有一个域对象DDisplay和一个DAO,DDisplayService。
public class DDisplay {
public String getTitle () {
return "title";
}
}
和
public class DDisplayService {
public DDisplay getDisplayByUUID (String uuid) {
return new DDisplay ();
}
}
我对RequestFactory有以下内容:
@ProxyForName("com.foobar.server.display.DDisplay")
public interface DDisplayProxy extends EntityProxy {
String getTitle ();
}
和
public interface DisplayRequestFactory extends RequestFactory {
@ServiceName(
value="com.foobar.server.display.DDisplayService"
,locator="com.foobar.server.display.SpringServiceLocator"
)
public interface DisplayRequestContext extends RequestContext {
Request <DDisplayProxy> getDisplayByUUID (String id);
}
DisplayRequestContext display ();
}
有人能告诉我在哪里放@SuppressWarnings(“requestfactory”)来摆脱这个错误吗?或者还有另一种方法 - 我只需要添加一个从未使用过的Locator类吗?
感谢,
吉姆
答案 0 :(得分:2)
通过阅读错误消息来源,您可以将其添加到EntityProxy DDisplayProxy
。像这样:
@SuppressWarnings("requestfactory")
@ProxyForName("com.foobar.server.display.DDisplay")
public interface DDisplayProxy extends EntityProxy {
String getTitle();
}
这是通过阅读com.google.web.bindery.requestfactory.apt.DomainChecker#visitType
的来源,如果currentTypeIsProxy
为真并且没有定位符,且类型不可实现,则会发出警告。从state.warn(...)
(给定代理类型元素)内部,它检查该类型是否存在@SuppressWarnings
注释。