| 

.NET C# Java Javascript Exception

submitToRemote-Tag überschreiben

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


submitToRemote-Tag überschreiben

koeberle - 07.09.2010 09:24
Hallo zusammen,

ich benutze das Mootools-Plugin, leider wurde dort das submitToRemote-Tag nicht implementiert. Was muss ich tun um das Tag selber in den Katalog aufzunehmen?

Christian


Re: submitToRemote-Tag überschreiben

koeberle - 07.09.2010 11:14
Habe mich mal durch das Plugin und das generierte HTML gewühlt und glaube das da irgendwas nicht richtig geladen wird.

In dem Plugin befindet sich die Datei MootoolsGrailsPlugin.groovy
Language: Groovy
import grails.util.GrailsUtil; import org.codehaus.groovy.grails.plugins.web.taglib.* import org.codehaus.groovy.grails.plugins.mootools.Mootools   class MootoolsGrailsPlugin { def version = "0.1.3" def dependsOn = [:]   def author = "Ford Guo" def authorEmail = "agile.guo at gmail.com" def title = "Provides integration with the Mootools toolkit http://mootools.net, a light OO javascript framework." def description = '''\ Provides integration with the Mootools toolkit http://mootools.net, a light OO javascript framework. '''   // URL to the plugin's documentation def documentation = "http://grails.org/Mootools+Plugin"   def doWithSpring = { // TODO Implement runtime spring config (optional) }   def doWithApplicationContext = { applicationContext -> if(GrailsUtil.isDevelopmentEnv()) { JavascriptTagLib.LIBRARY_MAPPINGS.mootools = ["mootools/mootools-${Mootools.version}-core-nc"] }else { JavascriptTagLib.LIBRARY_MAPPINGS.mootools = ["mootools/mootools-${Mootools.version}-core-yc"] } JavascriptTagLib.PROVIDER_MAPPINGS.mootools = MootoolsProvider.class }   def doWithWebDescriptor = { xml -> // TODO Implement additions to web.xml (optional) }   def doWithDynamicMethods = { ctx -> // TODO Implement registering dynamic methods to classes (optional) }   def onChange = { event -> // TODO Implement code that is executed when any artefact that this plugin is // watching is modified and reloaded. The event contains: event.source, // event.application, event.manager, event.ctx, and event.plugin. }   def onConfigChange = { event -> // TODO Implement code that is executed when the project configuration changes. // The event is the same as for 'onChange'. } }
Wenn ich in meinen Code <g:javascript library="mootools"/> aufrufe wird im HTML auch das mootools.js geladen
Nur ob der JavascripProvider benutzt wird, da habe ich so meine Zweifel.
Mein Code:
<g:remoteLink controller="addComment" update="commentList" onSuccess="clearInput('inputCommentText')">Test</g:remoteLink>
Im HTML finde ich da immer so was:
Language: HTML
<a onclick="new Ajax.Updater('commentList','/addComment',{asynchronous:true,evalScripts:true,onSuccess:function(e){clearInput('inputCommentText')}});return false;" href="/addComment">Test</a>
Erwarten würde ich etwas wo das JS mit 'new Request.HTML(' beginnt.

hier noch die Klasse MootoolsProvider
Language: Groovy
class MootoolsProvider implements JavascriptProvider &#123; &nbsp; //TODO how to process the onLoaded event?? def doRemoteFunction&#40;taglib,attrs, out&#41; &#123; if&#40;attrs.onLoading&#41; &#123; out << "${attrs.remove('onLoading')};" &#125; out << "new Request.HTML({" def url def jsParams = attrs.params?.findAll &#123; it.value instanceof JavascriptValue &#125; &nbsp; jsParams?.each &#123; attrs.params?.remove&#40;it.key&#41; &#125; &nbsp; if&#40;attrs.url&#41; &#123; url = taglib.createLink&#40;attrs.url&#41; &#125; else &#123; url = taglib.createLink&#40;attrs&#41; &#125; &nbsp; if&#40;!attrs.params&#41; attrs.params = &#91;:&#93; jsParams?.each &#123; attrs.params&#91;it.key&#93; = it.value &#125; &nbsp; def i = url?.indexOf&#40;'?'&#41; out<<"url:'" if&#40;i >-1&#41; &#123; if&#40;attrs.params instanceof String&#41; &#123; attrs.params += "+'&${url[i+1..-1].encodeAsJavaScript()}'" &#125;else if&#40;attrs.params instanceof Map&#41; &#123; def params = createQueryString&#40;attrs.params&#41; attrs.params = "'${params}${params ? '&' : ''}${url[i+1..-1].encodeAsJavaScript()}'" &#125; else &#123; attrs.params = "'${url[i+1..-1].encodeAsJavaScript()}'" &#125; out << url&#91;0..i-1&#93; &#125; else &#123; out << url &#125; out << "'" &nbsp; if&#40;attrs.update&#41; &#123; out << ",update:'" out <<&#40;attrs.update instanceof Map ? attrs.update.success : attrs.update&#41; out << "'" &#125; if&#40;attrs.onSuccess&#41; &#123; out << ",onSuccess: function(responseText, responseXML) {${attrs.remove('onSuccess')};}" &#125; if&#40;attrs.onComplete&#41; &#123; out << ",onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){${attrs.remove('onComplete')};}" &#125; if&#40;attrs.onFailure || &#40;attrs.update instanceof Map && attrs.update.failure &#41;&#41; &#123; out << ",onFailure: function(xmlHttpRequest){" if &#40;attrs.onFailure&#41; &#123; out << "${attrs.remove('onFailure')} ;" &#125; if &#40;attrs.update instanceof Map && attrs.update.failure&#41; &#123; out << "\$('" <<&#40;attrs.update.failure&#41;<<"').set('text',xmlHttpRequest.responseText) ;" &#125; out<< "}" &#125; attrs.remove&#40;"update"&#41; &nbsp; // process options out << getAjaxOptions&#40;attrs&#41; // close out << "}).send();" attrs.remove&#40;'params'&#41; &#125; &nbsp; private String createQueryString&#40;params&#41; &#123; def allParams = &#91;&#93; for &#40;entry in params&#41; &#123; def value = entry.value def key = entry.key if &#40;value instanceof JavascriptValue&#41; &#123; allParams << "${key.encodeAsURL()}='+${value.value}+'" &#125;else &#123; allParams << "${key.encodeAsURL()}=${value.encodeAsURL()}".encodeAsJavaScript&#40;&#41; &#125; &#125; if&#40;allParams.size&#40;&#41; == 1&#41; &#123; return allParams&#91;0&#93; &#125;else &#123; return allParams.join&#40;'&'&#41; &#125; &#125; &nbsp; // helper function to build ajax options def getAjaxOptions&#40;options&#41; &#123; def ajaxOptions = &#91;&#93; &nbsp; // necessary defaults def optionsAttr = options.remove&#40;'options'&#41; def async = optionsAttr?.remove&#40;'asynchronous'&#41; if&#40; async != null&#41; ajaxOptions << "async:${async}" else ajaxOptions << "async:true" &nbsp; def eval = optionsAttr?.remove&#40;'evalScripts'&#41; if&#40;eval != null&#41; ajaxOptions << "evalScripts:${eval}" else ajaxOptions << "evalScripts:true" &nbsp; def method = optionsAttr?.remove&#40;'mothod'&#41; if&#40;method != null&#41; ajaxOptions << "method:'${method}'" else ajaxOptions << "method:'post'" &nbsp; if&#40;options&#41; &#123; if&#40;options.params&#41; &#123; def params = options.remove&#40;'params'&#41; if &#40;params instanceof Map&#41; &#123; params = createQueryString&#40;params&#41; &#125; ajaxOptions << "data:${params}" &#125; &#125; // remaining options optionsAttr?.each &#123; k, v -> if&#40;k!='url'&#41; &#123; switch&#40;v&#41; &#123; case 'true': ajaxOptions << "${k}:${v}"; break; case 'false': ajaxOptions << "${k}:${v}"; break; case ~/\s*function&#40;\w*&#41;\s*/: ajaxOptions << "${k}:${v}"; break; default:ajaxOptions << "${k}:'${v}'"; break; &#125; &#125; &#125; &nbsp; return ",${ajaxOptions.join(',')}" &#125; &nbsp; def prepareAjaxForm&#40;attrs&#41; &#123; if&#40;!attrs.forSubmitTag&#41; attrs.forSubmitTag = "" attrs.params = "\$(this${attrs.remove('forSubmitTag')})" &#125; &#125;

Vielleicht sieht ja einer oder eine von euch was hier Fehlt.

Vielen Dank schon mal Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "submitToRemote-Tag überschreiben" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.