Hi Steven, Hi Alain, I made a short and simple sample to show you how my form works, what it does, and the error I get with the submission.
Because I run it with BaseX, I added a little Xquery script that creates the db and allows the saving of the submissions. If you want to use it, just put the form file into basex/webapp/static folder and the Xquery file into basex/webapp/ folder. It is a little REST application, just run basexhttp, then go to http://localhost:8984/xforms/install <http://localhost:8984/xforms/install> to create the db, and to http://localhost:8984/static/xsltforms/submissionLoop.xml <http://localhost:8984/static/xsltforms/submissionLoop.xml> to access the form. You can access the files on my Github Gist : https://gist.github.com/sardinecan/64451cf122095178159804e1ea13b4e5 <https://gist.github.com/sardinecan/64451cf122095178159804e1ea13b4e5> As you’ll see, I have two submissions, one for the added persons, which is looping as long as there are new persons, and a second one for the main instance which is running when all the new persons have been submitted. I use the dispatch method, with the xforms-submit-done event, and a @delay : <xf:action ev:event="xforms-submit-done"> <xf:dispatch name="submission" targetid="model" delay="1"/> </xf:action> Then I have a "if" rule to select the submission to run : <xf:action ev:event="submission"> <xf:send if="instance('sub')/xpr:person[@localType='new']" submission="submitNewPerson"/> <xf:send if="not(instance('sub')/xpr:person[@localType='new'])" submission="submitBio"/> </xf:action> Like Steven suggests, I think now that there is a submission activated twice, as the submission#submitBio is running two time and it shouldn’t, but maybe I’m doing something wrong ? Thanks a lot for your help, Best, Josselin. > Le 5 févr. 2021 à 10:54, Steven Pemberton <[email protected]> a écrit : > > Although submissions are by default asynchronous, a submission element may > only be activated once at a time. I'm surprised that all the event values are > empty; they really shouldn't be for an xforms-submit-error event. > > There is a difference in semantics between a dispatch with and without a > delay, even if the delay is 0, so try making the delay 0, it should still > work. The fact that it works with my original dispatch method suggests that > the problem is indeed with a submission being activated twice, but my reading > of the spec is that it should be possible once submit-done has been > dispatched. I will raise this with the working group. > > Best wishes, > > Steven > > On Thursday 04 February 2021 23:42:37 (+01:00), Josselin Morvan wrote: > > Hi Steven, > > Thank you for your quick response. Unfortunately, all the error events are > empty. > So, I tried your method with the dispatch element. At first it didn’t work > either, then I added a delay to the dispatch and… it works! > As I said, when the submission is done, I update my instance with the > server’s response (@xml:id and @localType value, etc.) and then I perform the > next submission, maybe all these actions are asynchronous or performed > simultaneously, and it produces a conflict? The @delay would allow to really > execute the next submission at the end of the entire process? > > Best, > Josselin. > >> Le 4 févr. 2021 à 22:25, Steven Pemberton <[email protected] >> <mailto:[email protected]>> a écrit : >> >> <message>Submission error. >> error-type: <output value="event('error-type')"/> >> error-message: <output value="event('error-message')"/> >> response-status-code: <output >> value="event('response-status-code')"/> >> response-reason-phrase: <output >> value="event('response-reason-phrase')"/> >> resource-uri: <output value="event('resource-uri')"/> >> </message> > > > --
_______________________________________________ Xsltforms-support mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/xsltforms-support
