Hi Gilles,

The paradigm of Sling is, that the request URL resolves to a single Resource, which is usually backed by a single JCR node. The Resource has a so-called resource type (comparable to a Java Class) which is used to select the script to call (similar to method selection in Java) [ When comparing to Java the Resource would then actually be something like the instance of the class ].

So if you have your employees stored under /location/employees. You might request /location/employees.infinity.json and get back a JSON rendering of the subtree below /location/employees (in the AJAX case). Alternatively you might provide a rendering script the resource type of the /location/employees node which returns an HTML table of the employees.

Hope this helps.

Regards
Felix


Gilles Scokart schrieb:
That's very good.   It means that out of the box sling support lists of nodes.

However, I have the feeling that the approach is not consistent with
the processing of a simple resource.

Following the Lars cheatsheet, I would have expected to have the step
2 (content resolution) being able to handle queries, and then having
step 3 deriving a nice ressource type (employee/list for instance)
followed then by normal rendering steps.

That would allow for instance to have list rendered into xml of html,
and not only json.  And moreover, I feel that would have made the
model more consistent.

Is my point of view correct, or did I have the wrong paradigm glasses?

My jcr-foo is too limited to say if such approach would be possible,
and if it is it will certainly require some magic.  But when I look at
sling, it is what I see : 'Magic'.


Gilles Scokart


2008/7/21 Bertrand Delacretaz <[EMAIL PROTECTED]>:
On Sat, Jul 19, 2008 at 7:31 PM, Gilles Scokart <[EMAIL PROTECTED]> wrote:

...But what If I want to list all employees in a page or as a result of
an AJAX call?  Did I have to use the url of the parent node of all the
employee and map that to a rendering script that I have to write ?  Is
there any default rendering for list ?...
The json rendering is recursive, so if you have a node
/content/employees that contains many employee nodes, you can list
them all at once by requesting /content/employees.infinity.json, or
/content/employees.2.json if you want only 2 levels, etc.

...And what if I only want a sublist (as a result of a query for instance) ?...
Then yes you'll need a query - the simplest way is to use the
JsonQueryServlet which you'd call for example like

 /content/employees.query.json?statement=...&queryType=...&offset=10&rows=10

See JsonQueryServletTest [1] for (a few) examples. The offset/rows
parameters are used for paging through results.

-Bertrand

[1]  
http://svn.eu.apache.org/repos/asf/incubator/sling/trunk/launchpad/webapp/src/test/java/org/apache/sling/launchpad/webapp/integrationtest/JsonQueryServletTest.java


Reply via email to