Hi Sergiu, is there a way 1) to programmatically generate the mentioned wiki document that generates the data 2) hide this document from the user?
Maybe I should write a servlet instead and register it in xwikis web.xml ? Thanks, Stefan. Am 26.08.2011 06:05, schrieb Sergiu Dumitriu: > On 08/25/2011 09:50 AM, Grüner Heinrich wrote: >> Hi, >> I am very new to xwiki. >> I've written a java-macro (implementing the >> org.xwiki.rendering.macro.Macro interface), which is generating some >> base content. >> now, this content should be able to query data from the macro-bean via >> ajax-request. >> Is that possible? How should the ajax call look like? > Well, a java bean isn't exactly ready to respond to HTTP requests by > itself, so you need to make an intermediary that lies somewhere in the > way of HTTP requests and exposes this data. > > There are several ways to do this, depending on how complex you want to > make this interaction. > > The best approach I'd advise is to write a scriptable service component > that offers some specific methods you need, and use it inside a wiki > document. Here's a short plan: > > 1. Write another class that implements > org.xwiki.script.service.ScriptService as a component. See > http://platform.xwiki.org/xwiki/bin/DevGuide/WritingComponents for more > details about writing components (don't forget to declare it in > components.txt). The hint of the component is the name of the service, > so chose something descriptive. Being in Java, you'll find a way to get > hold of your data and manipulate it as you wish. Build and put the jar > in WEB-INF/lib, just like your macro (they can be both in the same jar). > > 2. Write a wiki document that calls your new scriptable service like: > $service.myServiceName.getMyData() and outputs the data in the desired > format. Don't forget to set the correct content type, so if you're > outputting json put something like this: > $response.setContentType('application/json') > Of course, don't forget to wrap your code inside a {{velocity}} macro. > > 3. From Javascript make calls to this page using /get/ as the action and > outputSyntax=plain as the query string. Don't hardcode the URL, use > $xwiki.getURL('Service.DocumentName', 'get', 'outputSyntax=plain') to > let the platform give you the correct URL. > > Speaking of javascript, for the best practice you should read > http://platform.xwiki.org/xwiki/bin/DevGuide/SkinExtensionsTutorial > >> Thanks, >> Stefan. > _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users