Hi Vidal,
Am Donnerstag, den 13.03.2008, 14:34 +0100 schrieb Vidar Ramdal:
> On 3/13/08, Bertrand Delacretaz <[EMAIL PROTECTED]> wrote:
> > On Thu, Mar 13, 2008 at 1:54 PM, Felix Meschberger <[EMAIL PROTECTED]>
> > wrote:
> > > >... Also, is there any documentation somewhere, on the variables that
> > are
> >
> > > > available for scripting?
> > > The only "documentation" so far is the constants defined in the
> > > SlingBindings class....
> > And the tests: the .esp and .ecma scripts under
> >
> > http://svn.apache.org/repos/asf/incubator/sling/trunk/launchpad/webapp/src/test/resources/integration-test/
> >
> > provide some additional examples.
>
> Thank you both, that's helpful.
>
> Now, let's say I have a child iterator:
> var iterator = resource.resourceResolver.listChildren(r);
>
> ... and I know that the children will be JCR nodes, how can I output
> (e.g.) the title attribute of all child nodes?
>
> As you may have suspected, I'd want to produce a menu, like
> <ul>
> <li><a href="child1">Title of child 1</a></li>
> <li><a href="child2">Title of child 2</a></li>
> ...
> </ul>
You have two options : (1) Stay with Resources or (2) access the node.
To stay with resources you may do for each child resource:
var child = ...
var title = resourceResolver.getResource(child, "title");
if (title != null) {
var titleString = title.adaptTo(java.lang.String);
}
the trick here is, that the title resource represents a property and
with the adaptTo method you get the string value of that property.
The second option - using the node - you do
var child = ...
var childNode = child.adaptTo(Packages.javax.jcr.Node);
if (childNode != null && childNode.hasProperty("title")) {
var titleString =
childNode.getProperty("title").getString();
}
I personally prefer the first approach because it stays within a single
paradigm and you do not have to care about RepositoryExceptions being
thrown by directly accessing the node. Your mileage may vary, though.
Regards
Felix
>
>