6

有没有办法使用 RequestFactory 在单个请求中创建两个实体?我试过:

    EmployeeRequest request = requestFactory.employeeRequest();
    EmployeeProxy newEmployee = request.create(EmployeeProxy.class);
    newEmployee.setName("Joe!");

    Request<Void> createReq = request.persist().using(newEmployee);
    createReq.fire();

    EmployeeProxy newEmployee2 = request.create(EmployeeProxy.class);
    newEmployee2.setName("Sam!");

    Request<Void> createReq2 = request.persist().using(newEmployee2);
    createReq2.fire();

但是我收到一个请求已经在进行中的错误。当我提出两个单独的 EmployeeRequests 时:

    EmployeeRequest request = requestFactory.employeeRequest();
    EmployeeProxy newEmployee = request.create(EmployeeProxy.class);
    newEmployee.setName("Joe!");

    Request<Void> createReq = request.persist().using(newEmployee);
    createReq.fire();

    EmployeeRequest request2 = requestFactory.employeeRequest();
    EmployeeProxy newEmployee2 = request2.create(EmployeeProxy.class);
    newEmployee2.setName("Sam!");

    Request<Void> createReq2 = request2.persist().using(newEmployee2);
    createReq2.fire();

然后从浏览器发出两个单独的请求。我希望 RequestFactory 中的某些东西可以合并多个请求——我必须一次创建数百个实体,而且我不想发出数百个请求!

4

1 回答 1

9

是的,这是可能的。在您的第一个示例中,只需删除该行

createReq.fire();

当您createReq2.fire()在最后调用时,GWT 在一个请求中同时发送 newEmployee 和 newEmployee2(因为它们都被持久化在您的 EmployeeRequest“ request”的上下文中)。我个人觉得语义有点奇怪,但这只是我的看法。

Riley 的附录:以下语法是等价的,并且更直观:

    EmployeeRequest request = requestFactory.employeeRequest();
    EmployeeProxy newEmployee = request.create(EmployeeProxy.class);
    newEmployee.setName("Joe!");

    request.persist().using(newEmployee);

    EmployeeProxy newEmployee2 = request.create(EmployeeProxy.class);
    newEmployee2.setName("Sam!");

    request.persist().using(newEmployee2);
    request.fire();
于 2011-02-10T19:09:10.123 回答