From: Fraser H. <fra...@gm...> - 2010-06-30 14:39:25
|
Hi Joern, For the vast majority of cases I suppose you're right, and I realized for my case I'm able to do without replacing the instance for put requests. However using the Atom publishing protocal in eXist, put requests are used to update an entry or feed. eXist returns the updated entry including the automatically updated <atom:updated/> timestamp and possibly some other values. If one needed to use these automatically updated values in the form you might want to replace the instance that was submitted with the one returned by the Atom processor. Probably a pretty rare use case so may not be worth worrying about. Although it seems to make sense to me to make the default behavior to replace the instance with whatever the server returns from the put request if replace="instance" is used. Cheers, Fraser On Tue, Jun 29, 2010 at 4:51 PM, Joern Turner <joe...@be...>wrote: > On 6/28/10 8:22 PM, Fraser Hore wrote: > >> I've been playing around with the latest version of betterForm >> integrated into eXist and it's really great! I especially appreciate >> the implementation of the appearance attribute, it provides nice options >> for easily laying out the controls on the form. >> >> I'm still having problems with submissions where type="put" and >> replace="instance". Have you made any progress on this one? >> > Fraser, > > i answered a similar question in the FAQ: > https://www.betterform.de/trac/wiki/FAQ > > Please let me know if you disagree with the answer or got a use case that > explicitly needs an replace="instance" in conjunction with file PUT. > > > >> Thanks for all of your hard work!! >> >> Fraser >> >> >> >> On Thu, Apr 22, 2010 at 12:21 AM, Fraser Hore <fra...@gm... >> <mailto:fra...@gm...>> wrote: >> >> Hi Joern, >> >> I tried my test case in a standard betterForm implementation and >> replace="instance" still triggers an error while replace="none" >> works (although of course doesn't replace the instance). >> >> The following are the errors in the firebug console: >> >> reference to undefined property this._hash[id] >> >> if(!dojo._hasResource["dijit._base.foc...ls.betterform",["'en'","ROOT","xx"]); >> betterform.js (line 16) >> reference to undefined property dojo.isIE >> >> if(!dojo._hasResource["dijit._base.foc...ls.betterform",["'en'","ROOT","xx"]); >> betterform.js (line 16) >> reference to undefined property dojo.isIE >> >> if(!dojo._hasResource["dijit._base.foc...ls.betterform",["'en'","ROOT","xx"]); >> betterform.js (line 16) >> reference to undefined property dojo.isIE >> >> if(!dojo._hasResource["dijit._base.foc...ls.betterform",["'en'","ROOT","xx"]); >> betterform.js (line 16) >> xforms-submit-error at Object >> { resource-uri="file:///C:/Users/Fraser...forms/test2/LastIDs.xml", >> more...} >> betterform.js (line 16) >> >> The following is the content of the submission error: >> >> error-type "resource-error" >> location-path "instance('lastIDs')" >> resource-uri >> "file:///C:/Users/Fraser/betterForm/web/root/forms/test2/LastIDs.xml" >> response-body "" >> response-reason-phrase "" >> response-status-code "NaN" >> targetID "updateLastIDs" >> targetName "submission" >> >> I hope this helps! Any other info I can provide? >> >> Cheers, >> >> Fraser >> >> >> >> >> On Wed, Apr 21, 2010 at 9:15 PM, Joern Turner >> <joe...@be... <mailto:joe...@be...>> >> wrote: >> >> >>> >>> On 21.04.2010, at 17:40, Fraser Hore < >>> <mailto:fra...@gm...>fra...@gm... >>> >>> <mailto:fra...@gm...>> wrote: >>> >>> Hi Joern, >>>> >>>> Any progress on this issue? Anything I can help test? >>>> >>> Sorry no progress yet on this. We are simply too busy >>> preparing the eXost integration for release abd working on our >>> demo application. >>> >>> But you can help. It would interesting to see if the problem >>> also comes up with a plain betterform install (without eXist). >>> >>> Further it's always good to have a log and see which >>> exceptions come up. To turn on logging go to log4j.xml in >>> WEB-INF and set de.betterform to DEBUG. After restart you >>> should be able to see a full log of whats going on. >>> >>> Please let me know if you find something. >>> >>> Best, >>> >>> Joern >>> >>>> >>>> Cheers, >>>> >>>> Fraser >>>> >>>> >>>> On Tue, Apr 13, 2010 at 11:05 AM, Joern Turner < >>>> <mailto:joe...@be...> >>>> <mailto:joe...@be...>joe...@be... >>>> >>>> <mailto:joe...@be...>> wrote: >>>> >>>> of course - should have looked at your sample ;) >>>> >>>> >>>> On Apr 12, 2010, at 11:56 PM, Fraser Hore wrote: >>>> >>>> This test case and associated error is running in the >>>> eXist integration. >>>> >>>> >>>> >>>> On Mon, Apr 12, 2010 at 11:33 PM, Joern Turner < >>>> <mailto:joe...@be...> >>>> <mailto:joe...@be...> >>>> joe...@be... >>>> >>>> <mailto:joe...@be...>> wrote: >>>> interesting, >>>> >>>> found that in the official XForms test suite there is >>>> not a single occurence of replace="instance" combined >>>> with method="Post" or "Put". >>>> >>>> >>>> On Apr 12, 2010, at 9:54 PM, Fraser Hore wrote: >>>> >>>> Whenever I try to replace the xforms instance with >>>> the response from a post or put submission, I am >>>> getting a parse-error and processing stops (i.e. no >>>> submit done). Is this a bug? Thanks in advance for >>>> any assistance! >>>> >>>> Please see test case below (note that it works fine >>>> with the Mozilla XForms Plugin): >>>> >>>> Place the following xml file named LastIDs.xml in >>>> db/test (also attached): >>>> >>>> <cms:LastIDs xmlns:cms=" >>>> <http://www.innoventive.org/cms> >>>> <http://www.innoventive.org/cms> >>>> http://www.innoventive.org/cms"> >>>> >>>> <cms:LastNodeID>100</cms:LastNodeID> >>>> <cms:LastObjectID>100</cms:LastObjectID> >>>> </cms:LastIDs> >>>> >>>> Try the following update query (also attached as >>>> Test2.xq). The form is actually quite simple but I've >>>> included some lines to provide debug messages. For >>>> the submission "updateLastIDs", if replace is set to >>>> "instance", I get a parse-error. If it is set to >>>> "none" I get no parse error: >>>> >>>> xquery version "1.0"; >>>> >>>> declare namespace xf = " >>>> <http://www.w3.org/2002/xforms> >>>> <http://www.w3.org/2002/xforms> >>>> http://www.w3.org/2002/xforms"; >>>> >>>> declare namespace ev = " >>>> <http://www.w3.org/2001/xml-events> >>>> <http://www.w3.org/2001/xml-events> >>>> http://www.w3.org/2001/xml-events"; >>>> >>>> declare namespace cms = " >>>> <http://www.innoventive.org/cms> >>>> <http://www.innoventive.org/cms> >>>> http://www.innoventive.org/cms"; >>>> >>>> >>>> >>>> request:set-attribute("betterform.filter.parseResponseBody", >>>> "true"), >>>> >>>> <html xmlns=" <http://www.w3.org/1999/xhtml> >>>> <http://www.w3.org/1999/xhtml> >>>> http://www.w3.org/1999/xhtml" >>>> >>>> xmlns:xf=" <http://www.w3.org/2002/xforms> >>>> <http://www.w3.org/2002/xforms> >>>> http://www.w3.org/2002/xforms" >>>> >>>> xmlns:ev=" <http://www.w3.org/2001/xml-events> >>>> <http://www.w3.org/2001/xml-events> >>>> http://www.w3.org/2001/xml-events" >>>> >>>> xmlns:cms=" <http://www.innoventive.org/cms> >>>> <http://www.innoventive.org/cms> >>>> http://www.innoventive.org/cms"> >>>> >>>> <head> </head> >>>> <body> >>>> <xf:model id="mainModel" xmlns:xf=" >>>> <http://www.w3.org/2002/xforms> >>>> <http://www.w3.org/2002/xforms> >>>> http://www.w3.org/2002/xforms" >>>> >>>> xmlns:ev=" >>>> <http://www.w3.org/2001/xml-events> >>>> <http://www.w3.org/2001/xml-events> >>>> http://www.w3.org/2001/xml-events"> >>>> >>>> <xf:instance id="lastIDs"> >>>> <cms:LastIDs xmlns:cms=" >>>> <http://www.innoventive.org/cms> >>>> <http://www.innoventive.org/cms> >>>> http://www.innoventive.org/cms"> >>>> >>>> <cms:LastNodeID>101</cms:LastNodeID> >>>> <cms:LastObjectID>101</cms:LastObjectID> >>>> </cms:LastIDs> >>>> </xf:instance> >>>> <xf:submission id="loadLastIDs" replace="instance" >>>> ref="instance('lastIDs')" >>>> method="get"> >>>> <xf:resource> >>>> <http://localhost:8080/exist/rest/db/test/LastIDs.xml> < >>>> http://localhost:8080/exist/rest/db/test/LastIDs.xml> >>>> http://localhost:8080/exist/rest/db/test/LastIDs.xml</xf:resource> >>>> >>>> </xf:submission> >>>> <xf:submission id="updateLastIDs" replace="instance" >>>> ref="instance('lastIDs')" method="put"> >>>> <xf:resource> >>>> <http://localhost:8080/exist/rest/db/test/LastIDs.xml> < >>>> http://localhost:8080/exist/rest/db/test/LastIDs.xml> >>>> http://localhost:8080/exist/rest/db/test/LastIDs.xml</xf:resource> >>>> >>>> </xf:submission> >>>> >>>> <xf:instance xmlns="" id="messages"> >>>> <messages> >>>> <xforms-submit-error> >>>> <error-type/> >>>> <resource-uri/> >>>> <response-status-code/> >>>> <response-headers/> >>>> <response-reason-phrase/> >>>> <response-body/> >>>> </xforms-submit-error> >>>> <xforms-submit-done> >>>> <resource-uri/> >>>> <response-status-code/> >>>> <response-headers/> >>>> <response-reason-phrase/> >>>> </xforms-submit-done> >>>> </messages> >>>> </xf:instance> >>>> <xf:action ev:event="xforms-submit-error"> >>>> <xf:setvalue >>>> ref="instance('messages')/xforms-submit-error/error-type" >>>> value="event('error-type')"/> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-error/resource-uri" >>>> value="event('resource-uri')"/> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-error/response-status-code" >>>> value="event('response-status-code')"/> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-error/response-headers" >>>> value="event('response-headers')"/> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-error/response-reason-phrase" >>>> >>>> value="event('response-reason-phrase')"/> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-error/response-body" >>>> value="event('response-body')"/> >>>> </xf:action> >>>> <xf:action ev:event="xforms-submit-done"> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-done/resource-uri" >>>> value="event('resource-uri')"/> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-done/response-status-code" >>>> value="event('response-status-code')"/> >>>> <xf:insert >>>> >>>> nodeset="instance('messages')/xforms-submit-done/response-headers" >>>> origin="event('response-headers')"/> >>>> <xf:setvalue >>>> >>>> ref="instance('messages')/xforms-submit-done/response-reason-phrase" >>>> >>>> value="event('response-reason-phrase')"/> >>>> </xf:action> >>>> >>>> </xf:model> >>>> >>>> <xf:input ref="instance('lastIDs')/cms:LastNodeID"> >>>> <xf:label>Last Node ID</xf:label> >>>> </xf:input> >>>> <xf:input ref="instance('lastIDs')/cms:LastObjectID"> >>>> <xf:label>Last Object ID</xf:label> >>>> </xf:input> >>>> >>>> <xf:trigger> >>>> <xf:label>Load Last IDs</xf:label> >>>> <xf:action ev:event="DOMActivate"> >>>> <xf:send submission="loadLastIDs"/> >>>> </xf:action> >>>> </xf:trigger> >>>> <xf:trigger> >>>> <xf:label>Update Last IDs</xf:label> >>>> <xf:action ev:event="DOMActivate"> >>>> <xf:send submission="updateLastIDs"/> >>>> </xf:action> >>>> </xf:trigger> >>>> >>>> <div id="debug-submissions" xmlns:xf=" >>>> <http://www.w3.org/2002/xforms> >>>> <http://www.w3.org/2002/xforms> >>>> http://www.w3.org/2002/xforms"> >>>> >>>> <xf:group ref="instance('messages')/xforms-submit-error"> >>>> <xf:label>Error Messages</xf:label> >>>> <xf:output ref="error-type"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> <xf:output ref="resource-uri"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> <xf:output ref="response-status-code"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> <xf:output ref="response-headers"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> <xf:output ref="response-reason-phrase" >>>> mediatype="text/xhtml"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> <xf:output ref="response-body"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> </xf:group> >>>> <xf:group ref="instance('messages')/xforms-submit-done"> >>>> <xf:label>Submit Done Messages</xf:label> >>>> <xf:output ref="resource-uri"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> <br/> >>>> <xf:output ref="response-status-code"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> <xf:group ref="response-headers"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> <xf:repeat nodeset="../header"> >>>> <xf:output ref="./value"> >>>> <xf:label> >>>> <xf:output ref="../name"/> >>>> </xf:label> >>>> </xf:output> >>>> </xf:repeat> >>>> </xf:group> >>>> <xf:output ref="response-reason-phrase" >>>> mediatype="text/xhtml"> >>>> <xf:label> >>>> <xf:output value="name(.)"/> >>>> </xf:label> >>>> </xf:output> >>>> </xf:group> >>>> </div> >>>> >>>> </body> >>>> </html> >>>> >>>> >>>> >>>> <LastIDs.xml><Test2.xq>------------------------------------------------------------------------------ >>>> Download Intel® Parallel Studio Eval >>>> Try the new software tools for yourself. Speed >>>> compiling, find bugs >>>> proactively, and fine-tune applications for parallel >>>> performance. >>>> See why Intel Parallel Studio got high marks during beta. >>>> < >>>> http://p.sf.net/sfu/intel-sw-dev_______________________________________________ >>>> > >>>> < >>>> http://p.sf.net/sfu/intel-sw-dev_______________________________________________ >>>> > >>>> http://p.sf.net/sfu/intel-sw-dev_______________________________________________ >>>> Betterform-users mailing list >>>> <mailto:Bet...@li...> >>>> <mailto:Bet...@li...> >>>> Bet...@li... >>>> <mailto:Bet...@li...> >>>> >>>> < >>>> https://lists.sourceforge.net/lists/listinfo/betterform-users> >>>> < >>>> https://lists.sourceforge.net/lists/listinfo/betterform-users> >>>> https://lists.sourceforge.net/lists/listinfo/betterform-users >>>> >>>> >>>> >>>> >> >> > |