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

Reply via email to