Saturday, 15 June 2013

jsp - CQ access deep child node's property from current node (current component) -



jsp - CQ access deep child node's property from current node (current component) -

i working on carousel component called "tabbedcarousel", need iterate through it's children nodes access image property. see pic below:

that "tabbedimagecarouselunselectedimage" -> "filereference" need get.

say m working on "tabbedcarousel.jsp", have access currentnode, way m assuming deep kid img property this:

<% nodeiterator tabbedcarouselchildnodes = currentnode.getnodes(); while(tabbedcarouselchildnodes.hasnext()){ node parnode = tabbedcarouselchildnodes.nextnode(); nodeiterator parchildnodes = parnode.getnodes(); while(parchildnodes.hasnext()){ node tabbedcarouselitemnode = parchildnodes.nextnode(); nodeiterator tabbedcarouselitemchildnodes = tabbedcarouselitemnode.getnodes(); while(tabbedcarouselitemchildnodes.hasnext()){ node tabimgnode = tabbedcarouselitemchildnodes.nextnode(); %> test here s img property : <%= tabimgnode.getproperties("filereference").tostring()%> !!! <% } } %>

but not work. can give me suggestions. thanks

i've added 1 brace @ end , replaced tabimgnode.getproperties() hasproperty()/getproperty() combo. works fine on cq:

<% nodeiterator tabbedcarouselchildnodes = currentnode.getnodes(); while(tabbedcarouselchildnodes.hasnext()) { node parnode = tabbedcarouselchildnodes.nextnode(); nodeiterator parchildnodes = parnode.getnodes(); while(parchildnodes.hasnext()){ node tabbedcarouselitemnode = parchildnodes.nextnode(); nodeiterator tabbedcarouselitemchildnodes = tabbedcarouselitemnode.getnodes(); while(tabbedcarouselitemchildnodes.hasnext()){ node tabimgnode = tabbedcarouselitemchildnodes.nextnode(); if (!tabimgnode.hasproperty("filereference")) { continue; } %> test: <%= tabimgnode.getproperty("filereference").getstring()%> <% } } } %>

btw, can refactored using sling api:

<% iterator<resource> items = resource.getchild("par").listchildren(); while (items.hasnext()) { resource property = items.next().getchild("tabimageunselectedimage/filereference"); if (property == null) { continue; } %> filereference: <%= property.adaptto(string.class) %> <% } %>

the 3rd alternative utilize 3rd party library called slingquery:

<% (resource r : slingquery.$(resource).find("#tabimageunselectedimage")) { %> path: <%= r.adaptto(valuemap.class).get("filereference") %> <% } %>

jsp components cq5 jcr sling

No comments:

Post a Comment