GWT RequestFactory y solicitudes mĂșltiples
(1)
¿Hay alguna manera de utilizar RequestFactory para crear dos entidades en una única solicitud? Lo intenté:
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();
Pero me sale un error de que una solicitud ya está en progreso. Cuando hice dos Solicitudes de Empleados separadas:
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();
Luego, se realizan dos solicitudes por separado desde el navegador. Espero que algo en RequestFactory pueda combinar varias solicitudes. Tengo que crear cientos de entidades a la vez, ¡y no quiero hacer cientos de solicitudes!
Si es posible. En tu primer ejemplo, simplemente elimina la línea
createReq.fire();
Cuando se llama a createReq2.fire()
al final, entonces GWT envía tanto newEmployee como newEmployee2 en una única solicitud (porque ambos se conservaron en el contexto de su EmployeeRequest " request
"). Personalmente creo que la semántica es un poco extraña, pero esa es solo mi opinión.
Addendum por Riley: La siguiente sintaxis es equivalente y es mucho más intuitiva:
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();