- From: Adam Flinton <adam.flinton@nhs.net>
- Date: Wed, 07 Mar 2007 10:51:37 +0000
- To: Www-Forms Www-Forms <www-forms@w3.org>
Dear All, I have an XForm (either native (e.g. in firefox) or rendered to html by Chiba within a larger page made up by & controlled by JSF. So quick tip time: On the XForm submit trigger/action , add a sub-action which uses post submit-done to call a javascript method called clickLinkByClass('Refresh','input') e.g. <xforms:trigger id="OID_Group_trigger" style="display:block"> <xforms:label>Update</xforms:label> <xforms:action ev:event="DOMActivate"> <xforms:send submission="xmlprocess" /> <xforms:action ev:event="xforms-submit-done" propagate="false"> <xforms:load resource="javascript:clickLinkByClass('Refresh','input')" /> </xforms:action> </xforms:action> </xforms:trigger> The JS is: function clickLinkByClass(Classname,tagname){ var targetE1; myObjCol = getElementsByClassName(Classname, tagname); if (myObjCol != null && myObjCol.length > 0){ for (i = 0, j = myObjCol.length; i < j; i++) { targetE1 = myObjCol[i]; } //var targetID1 = targetE1.id; if (document.createEvent) { var evObj = document.createEvent('MouseEvents') evObj.initEvent( 'click', true, false ) targetE1.dispatchEvent(evObj) } else if (document.createEventObject) { targetE1.fireEvent('onclick') } } } Then on your main jsf (i.e. the one which includes the XForm) place a button action which simply calls an empty method on the Backing bean e.g. <h:form id="RefreshForm" rendered="true"> <h:inputHidden id="XMLFile" value="#{DisplayController.xmlFile}" /> <h:inputHidden id="editState" value="#{DisplayController.editState}" /> <h:inputHidden id="type" value="xform" /> <h:inputHidden id="JavaScriptYN" value="" /> <h:panelGrid columns="1"> <h:commandButton id="Refresh" value="Refresh" action="#{DOMElement.refresh}" styleClass="Refresh"> <t:updateActionListener property="#{DOMElement.init}" value="#{DisplayController.xmlFile}" /> <t:updateActionListener property="#{DOMElement.nodeLocator}" value="#{DOMElement.nodeLocator}" /> </h:commandButton> </h:panelGrid> </h:form> Then hide it from view via css e.g. input.Refresh{display:none; visibility: hidden;} et voila when the XForm submits, the JSF is refreshed. Adam ********************************************************************** Information in this message may contain confidential and privileged information. If you are not the intended recipient please accept our apologies; please do not disclose, copy or distribute information in this e-mail or take any action in reliance on its contents: to do so is strictly prohibited and may be unlawful. Please inform us that this message has gone astray before deleting it. Thank you for your co-operation. NHSmail is used daily by over 100,000 staff in the NHS. Over a million messages are sent every day by the system. To find out why more and more NHS personnel are switching to this NHS Connecting for Health system please visit www.connectingforhealth.nhs.uk/nhsmail **********************************************************************
Received on Wednesday, 7 March 2007 17:06:37 UTC