Java gwt编辑器框架,将ui的状态复制到对象中-持久化对象时的最佳实践
所以,我想知道这是否可能 我一直在使用编辑器框架,我想知道,除了使用编辑调用将对象的状态推送到ui之外,是否还有其他方法可以获取表单的状态并将其输入到对象中 我正在将RequestFactoryEditorDriver与代理对象一起使用,并尝试按照反向编辑器的思路做一些事情,在反向编辑器中,我用表单中的值填充代理对象,然后将其持久化 我也是GWT新手,我在两周前开始学习,一直在自学各种示例代码和google,是否有其他GWT框架可以做到这一点。或者,简单地持久化新对象的最佳实践是什么 我正在使用活动/场所,直到今晚(我正在尝试快速获取一些信息,因此我知道这不是正确的方法)通过我的演示者传入表单的所有字段以创建对象。我想做些更干净的事 非常感谢您的帮助Java gwt编辑器框架,将ui的状态复制到对象中-持久化对象时的最佳实践,java,gwt,Java,Gwt,所以,我想知道这是否可能 我一直在使用编辑器框架,我想知道,除了使用编辑调用将对象的状态推送到ui之外,是否还有其他方法可以获取表单的状态并将其输入到对象中 我正在将RequestFactoryEditorDriver与代理对象一起使用,并尝试按照反向编辑器的思路做一些事情,在反向编辑器中,我用表单中的值填充代理对象,然后将其持久化 我也是GWT新手,我在两周前开始学习,一直在自学各种示例代码和google,是否有其他GWT框架可以做到这一点。或者,简单地持久化新对象的最佳实践是什么 我正在使用
对其他做这件事的人-托马斯·布罗耶回答了这个问题,我就是这样得到这个答案的 工作活动
public class EmployeesCreateFormActivity extends AbstractActivity implements EmployeesCreateFormView.Presenter
interface EmployeeEditorDriver extends RequestFactoryEditorDriver<EmployeeProxy, EmployeesCreateFormView> {
}
private final ClientFactory clientFactory;
private final EmployeesCreateFormView view;
private EmployeeRequestContext employeeContext;
private EmployeeProxy employee;
private final EmployeeEditorDriver editor;
public EmployeesCreateFormActivity(ClientFactory clientFactory) {
this.clientFactory = clientFactory;
view = clientFactory.getEmployeesCreateFormView();
employeeContext = clientFactory.getRequestFactory().employeeContext();
employee = employeeContext.create(EmployeeProxy.class);
editor = GWT.create(EmployeeEditorDriver.class);
}
@Override
public void start(AcceptsOneWidget container, EventBus eventBus) {
view.setPresenter(this);
container.setWidget(view.asWidget());
editor.initialize(view);
editor.edit(employee, employeeContext);
}
@Override
public void doCreate() {
editor.flush();
// I STILL HAVE NO IDEA WHAT TO DO WITH THIS ????????
employee.setVersion(Integer.valueOf(1));
Request<EmployeeProxy> createRequest = employeeContext.persist(employee);
createRequest.fire(new Receiver<EmployeeProxy>() {
@Override
public void onSuccess(EmployeeProxy response) {
Window.alert("successfully created employee " + response.getId() + ": " + response.getFirstName());
clientFactory.getPlaceController().goTo(new EmployeesCreatePlace());
}
});
}
});
}
公共类EmployeesCreateFormActivity扩展了AbstractActivity实现EmployeesCreateFormView.Presenter
接口EmployeeEditorDriver扩展了RequestFactoryEditorDriver{
}
私人最终客户工厂客户工厂;
私人最终雇员CreateFormView视图;
私人雇员要求上下文雇员上下文;
私人雇员代理雇员;
私人最终雇员编辑或河流编辑;
公共雇员创建活动(ClientFactory ClientFactory){
this.clientFactory=clientFactory;
view=clientFactory.getEmployeesCreateFormView();
employeeContext=clientFactory.getRequestFactory().employeeContext();
employee=employeeContext.create(EmployeeProxy.class);
editor=GWT.create(EmployeeEditorDriver.class);
}
@凌驾
公共void启动(AcceptsOneWidget容器,EventBus EventBus){
view.setPresenter(此);
container.setWidget(view.asWidget());
编辑器。初始化(视图);
editor.edit(雇员、雇员上下文);
}
@凌驾
public void doCreate(){
editor.flush();
//我还是不知道该怎么办????????
employee.setVersion(整数.valueOf(1));
Request createRequest=employeeContext.persist(员工);
createRequest.fire(新接收器(){
@凌驾
成功时公开作废(员工代理响应){
Window.alert(“成功创建员工”+response.getId()+”:“+response.getFirstName());
clientFactory.getPlaceController().goTo(新员工创建地点());
}
});
}
});
}
方法是在活动开始时(就像编辑现有对象一样)编辑一个空对象(),以便将用字段的值填充对象。谢谢您的回答-如果您不介意的话,我有一个问题,因为我不确定如何做。当前,当我尝试此操作时,会出现异常“尝试编辑以前由另一个请求上下文编辑的实体代理”,这很有意义。我想知道的是,是否有一种适当的方式来安排活动,这样就不会发生这种情况。我在活动中所做的是:我持有对EmployeeProxy的引用,然后在start方法中,我使用我的客户端工厂来获取适当的RequestContext并创建EmployeeProxy。然后,我按照您提到的操作,使用employee代理调用edit(),并再次调用requestFactory.employeeContext。在我的onCreate方法中(我不确定是否正确,我的活动是一个presenter,我调用presenter.onCreate),我只需调用editor.flush()并尝试在抛出错误时将其持久化。另外,在过去的两周里,我一直在读你的博客,我一直在做这件事——我想知道你是否有一个正确的例子来说明如何做这件事。如果你有这些答案,我将不胜感激。非常感谢您对多条评论表示担忧必须在相同的上下文中创建并保留代理。