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