【发布时间】:2013-07-19 17:29:34
【问题描述】:
我正在尝试使用 objectify 持久化一个简单的类,但没有成功。
为这篇长文道歉,但我认为信息多于少。
我效仿了 David M. Chandler 的例子:
http://turbomanage.wordpress.com/2011/03/25/using-gwt-requestfactory-with-objectify/
但我不断收到 NullPointerException。
我不知道我做错了什么,但我使用的类如下:
我的代理,DatastoreObjectProxy:
@ProxyFor(value = DatastoreObject.class, locator = ObjectifyLocator.class)
public interface DatastoreObjectProxy extends EntityProxy{
Long getId();
void setId(Long id);
Integer getVersion();
void setVersion(Integer id);
}
和BeingProxy:
@ProxyFor(value = Being.class, locator = ObjectifyLocator.class)
public interface BeingProxy extends DatastoreObjectProxy {
String getName();
void setName(String name);
String getFiscalNumber();
void setFiscalNumber(String fiscalNumber);
}
和我的请求工厂:
public interface MyRequestFactory extends RequestFactory{
@Service(value = BeingDao.class, locator = DaoServiceLocator.class)
interface BeingRequestContext extends RequestContext {
Request<List<BeingProxy>> listAll();
Request<Void> save(BeingProxy being);
Request<BeingProxy> saveAndReturn(BeingProxy being);
Request<Void> removeBeing(BeingProxy being);
}
BeingRequestContext beingRequestContext();
}
最后,我的 UI 使用以下代码来创建和检索 Being 实体:
@UiHandler("btnAdd") void onBtnAddClick(ClickEvent 事件) {
//Validate name
//TODO warn user if invalid
if (txtName==null||txtName.getText().equals("")){return;}
String n = txtName.getText();
//Validate fiscal number
//TODO warn user if invalid
if (txtFiscalNumber==null||txtFiscalNumber.getText().equals("")){return;}
String fn = txtFiscalNumber.getText();
BeingRequestContext reqCtx = rf.beingRequestContext();
final BeingProxy being = reqCtx.create(BeingProxy.class);
being.setName(n);
being.setFiscalNumber(fn);
Request<BeingProxy> saveRequest = reqCtx.saveAndReturn(being);
saveRequest.fire(new Receiver<BeingProxy>(){
@Override
public void onSuccess(BeingProxy response) {
addToList(response);
}
});
这会引发前面提到的异常。
我注意到服务器代码是按注释执行的。所以我猜问题出在请求工厂或客户端。但是我检查了三遍代码,没有发现任何问题。
感谢您的宝贵时间。
最好的问候。
【问题讨论】:
-
那是一大堆代码,我什至不会费心去筛选那个。缩小一点。
-
如果您尽最大努力将代码范围缩小到几个相关的方法,您将有 更多 更多的运气来帮助您。
-
@HenryHarris 我稍微修改了代码。我希望现在好些了。
标签: java requestfactory objectify