- From: John Boyer <boyerj@ca.ibm.com>
- Date: Wed, 31 Aug 2005 10:27:03 -0700
- To: "Ben Cochran" <BCochran@ClubMom-inc.com>
- Cc: www-forms@w3.org, www-forms-request@w3.org
- Message-ID: <OF643E7575.74765423-ON8825706E.005F9C32-8825706E.005FE3E6@ca.ibm.com>
It's a little unclear what you want to do here. Do you mean that you want to run the first submission but only conditionally run the second submission if certain conditions are true? I think XML events is not very good at testing conditions for cancellation. Or do you mean that you want to abort the whole sequence of operations until some conditions are met? In that case, you can put a relevant condition on the node referenced by the trigger so that it cannot be activated by the user until the conditions are met. It sounds more likely that this is what you really want, but it's hard to tell. John M. Boyer, Ph.D. Senior Product Architect/Research Scientist Workplace, Portal and Collaboration Software IBM Victoria Software Lab E-Mail: boyerj@ca.ibm.com http://www.ibm.com/software/ "Ben Cochran" <BCochran@ClubMom-inc.com> Sent by: www-forms-request@w3.org 08/30/2005 11:00 AM To <www-forms@w3.org> cc Subject Cancelling events What I'm looking for is a good solid example of how to cancel an event in xforms. Specific case: I have a pair of models, one being submitted to an XML file via 'put', the other going to a servlet via 'url-encoded-post'. Both of these models are being submitted "simultaneously," through two <send> actions tied to a single <trigger>. Now, rather than have logic in the servlet so as not to perform a DB update if one of the values is empty, I'd rather just not send that submission at all. Particularly, what I'd like to do (I think) is cancel the xforms-submit event before it hits the servlet-tied submission. What I can't figure out is how to do this. As tests, I've tried adding ev:defaultAction="cancel" and ev:propogate="stop" to the <send> actions; adding ev:event="xforms-submit", ev:propagate="stop", and ev:defaultAction="cancel" to the servlet's <model> element. I may well be on the completely wrong track. There seems to be precious little online or in Xforms books that gives anything else other than listing the event-model attributes and saying "you can cancel events." Any help is appreciated. ----Example Code Below---- <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/2002/06/xhtml2" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ev="http://www.w3.org/2001/xml-events"> <head> <title>Multiple Submission Test</title> <xf:model id="servlet_model"> <xf:instance id="servlet_instance" xmlns=""> <servlet> <value1/> <value2/> </servlet> </xf:instance> <xf:submission id="servlet_submit" action="TestServlet" method="url-encoded-post" separator="&" replace="none"/> </xf:model> <xf:model id="xml_model"> <xf:instance id="xml_instance" xmlns=""> <document> <foo> <value1/> <bar someattribute=""> <value2/> </bar> </foo> </document> </xf:instance> <xf:submission id="xml_submit" action=" file:///C:/somexml.xml" method="put" replace="none"/> </xf:model> </head> <body> <xf:group model="servlet_model" ref="instance('servlet_instance')" appearance="full"> <xf:label>To Servlet</xf:label> <xf:input ref="value1" appearance="full"> <xf:label>Value 1 </xf:label> </xf:input> <xf:input ref="value2"> <xf:label>Value 2 </xf:label> </xf:input> </xf:group> <BR/> <xf:group model="xml_model" ref="instance('xml_instance')/foo" appearance="full"> <xf:label>To XML</xf:label> <xf:input ref="value1"> <xf:label>Value 1</xf:label> </xf:input> <xf:input ref="bar/@someattribute"> <xf:label>Some Attribute</xf:label> </xf:input> <xf:input ref="bar/value2"> <xf:label>Value 2</xf:label> </xf:input> </xf:group> <BR/> <xf:group appearance="minimal"> <xf:trigger> <xf:label>Submit Both</xf:label> <xf:action ev:event="DOMActivate"> <xf:send submission="servlet_submit"/> <xf:send submission="xml_submit"/> <xf:load resource=" http://www.yahoo.com" show="replace"/> </xf:action> </xf:trigger> </xf:group> </body> </html> CMI Marketing, Inc. Ben Cochran Technical Lead, Interface Engineering 401 Park Avenue South 5th Floor New York, New York 10016 tel 646.435.6508 fax 646.435.6600 www.clubmom.com
Received on Wednesday, 31 August 2005 17:27:33 UTC