以下代码段成功显示了Cats列表,但是当我刷新驱动程序时,Cat对象中的值都为空。
可以按预期编辑猫舍的名称。
HasDataEditor<CatProxy> residentsEditor= HasDataEditor.of(cellTable)
CatHouse{
String name;
List<Cat> residents;
}
Cat{
String name;
String favoriteColor;
}
以下是我创建请求的方式。 (改编自MobileWebApp示例项目)
// Flush the changes into the editable CatHouse.
final CatHouseRequest context = (CatHouseRequest) clientFactory.getCatHouseEditView().getEditorDriver().flush();
/*
* Create a persist request the first time we try to save this task. If
* a request already exists, reuse it.
*/
if (taskPersistRequest == null) {
taskPersistRequest = context.updateCatHouse(editTask).with(
clientFactory.getCatHouseEditView().getEditorDriver().getPaths());
}
// Fire the request.
taskPersistRequest.fire(new Receiver<ActionProxy>() {
@Override public void onConstraintViolation(final Set<ConstraintViolation<?>> violations) {
...
}
@Override public void onSuccess(final CatHouseProxy response) {
...
}
});
我已经在它被解雇之前检查了taskPersistRequest变量。
taskPersistRequest.propertyRefs = [catHouse]
taskPersistRequest.requestContext有 CatHouse的正确值 和猫。
taskPersistRequest.requestData.parameters CatHouse只有一个值 没有与Cats相关的数据。 (这看起来 喜欢这个问题)
上下文中的editProxies变量 具有正确的值 CatHouse和Cat。
答案 0 :(得分:1)
我今天遇到了类似的问题。如果在创建Cat项目之前创建CatHouse,则在同一RequestContext上,持久存储CatHouse将失败,因为Cat项目尚不可用。
要解决此问题:首先创建Cat bean并在之后创建CatHouse bean:
cat = request.create(Cat.class)
catHouse = request.create(CatHouse.class)
使用编辑器框架时实现这一点并非易事,因为它要求您在编辑器触发创建Cat实例之前在编辑器驱动程序中传递CatHouse实例。
一种可能的解决方法是以新的请求上下文复制刷新的自动bean,方式是在CatHouse之前创建Cats。
(如果您没有创建,只是编辑猫舍,请考虑request.edit(catHouse)而不是request.create(CatHouse.class))