Hello again, I have generated the event urls and given them to my editor initialization script. An excerpt: setup : function(editor) { editor.addButton('testButton', { text: 'Test Button', icon: false, onclick: function() { var sentData = {paragraphContent : tinymce.activeEditor.getContent()}; $.post( jsonObject.saveUrl, sentData, function(data, status) { tinymce.remove(jsonObject.elemId); } ); } }); }
When the user clicks the test button, an AJAX request containing the content of the editor is sent to the server. After receiving the response the editor should be removed from the DOM. The handler side: void onSaveWork(@RequestParameter(value="paragraphContent") final String paragraphContent) { showEditor = false; ajaxResponseRenderer.addRender(chapterContentZone); } To be simple at first, the event handler only sets showEditor and queues a render of the zone containing the editor. So the only thing that should be happening is that the div displaying the read-only content should reappear, which it doesn't. I guess this is because the response isn't handled automatically and I have to replace a client-side DOM element with the "data" content of the response. Is it because I use a self-written javascript and don't rely fully on Tapestry here? Should I use some functions of tapestry.js? Am I doing something wrong here or am I on the right track? Regards, Daniel P. -----Ursprüngliche Nachricht----- Von: Poggenpohl, Daniel Gesendet: Mittwoch, 27. Mai 2015 09:02 An: Tapestry users Betreff: AW: AW: AW: Adding JS to my component combined with using t:If Hi, thank you for helping me. Again I had wording issues, it seems. I did know that event handling methods on Tapestry pages and components are written manually. I just wrote "event handlers" because I thought there was something in between the handler methods and the Eventlinks that was generated when an Eventlink is created. Now I have realized that creating an Eventlink amounts to generating the markup for a link with the URL containing the event name. When you then send a request with this URL, Tapestry sees the event and looks for an appropriately named handler in the page/component. I had just thought there was more to it. As you say in your advice, I expected too much and am now using the method of generating an Eventlink request URL that I give to the tinyMCE editor so that the appropriate request is made at the expected time. I think that is the way to go. I also thought that JavaScript events, HTML DOM events and Tapestry Component Events were the same before. Regards, Daniel P. -----Ursprüngliche Nachricht----- Von: Thiago H de Paula Figueiredo [mailto:thiag...@gmail.com] Gesendet: Dienstag, 26. Mai 2015 20:58 An: Tapestry users Betreff: Re: AW: AW: Adding JS to my component combined with using t:If On Tue, 26 May 2015 11:49:20 -0300, Poggenpohl, Daniel <daniel.poggenp...@isst.fraunhofer.de> wrote: > Hi again, Hi! > Jquery can define arbitrary events that can be triggered. I thought I > could raise a JS event and handle it via "onEVENTNAME" on the Tapestry > component side. But of course that doesn't work, probably because no > event handlers are generated because no corresponding eventlink is > created. Event handlers aren't generated at all by Tapestry. You declare them by using @OnEvent or using a naming convention. You just cannot trigger a JS event and expect it to magically trigger a server-side event. Tapestry doesn't need an EventLink or ActionLink to be able to trigger an event handler method in the server-side. You can create your own events and their URLs by using ComponentResources.createEventLink(). With the URL generated by that method, you can invoke them using AJAX in JS. -- Thiago H. de Paula Figueiredo Tapestry, Java and Hibernate consultant and developer http://machina.com.br --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org