Existe-t-il un moyen d'utiliser RequestFactory pour créer deux entités dans une même requête? J'ai essayé:GWT RequestFactory et plusieurs demandes
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();
Mais je reçois une erreur qu'une demande est déjà en cours. Quand je fis deux EmployeeRequests séparés:
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();
Ensuite, deux demandes distinctes sont faites à partir du navigateur. J'espère que quelque chose dans le RequestFactory peut fusionner plusieurs demandes - je dois créer des centaines d'entités à la fois, et je ne veux pas faire des centaines de demandes!
Oh, comment bizarre. Vraiment étrange. Cela signifie-t-il que je dois créer un mécanisme pour planifier un appel fire() après avoir fait tous les appels persist() que je veux faire? Je suppose que ce serait assez simple à faire avec une commande différée, mais ... plutôt maladroite! –
@Riley: J'envelopperais tout le code qui construit la requête dans une méthode ou dans son propre objet. J'utiliserais une variable (ou un champ) pour me souvenir de la dernière requête. Ensuite, après l'exécution de cette partie du code, j'appelle fire sur la dernière requête. (Je n'utiliserais pas une commande différée - c'est trop fragile, car ce n'est pas facile à vérifier, quand exactement ça va s'exécuter.) –
Mise à jour: Je faisais une bêtise et maintenant votre code fonctionne très bien. Je vais réfléchir à des façons d'agréger les demandes. Merci Chris! –