6

RequestFactory を使用して 1 つのリクエストで 2 つのエンティティを作成する方法はありますか? 私は試した:

    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();

しかし、リクエストがすでに進行中であるというエラーが表示されます。2 つの個別の 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();

次に、ブラウザから 2 つの個別の要求が行われます。RequestFactory の何かが複数のリクエストをマージできることを願っています。一度に何百ものエンティティを作成する必要があり、何百ものリクエストを作成したくありません!

4

1 に答える 1

9

はい、可能です。最初の例では、行を削除するだけです

createReq.fire();

最後に呼び出すcreateReq2.fire()と、GWT は newEmployee と newEmployee2 の両方を 1 つのリクエストで送信します (どちらも 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 に答える