Uploaded image for project: 'Sling'
  1. Sling
  2. SLING-1414

JSP Expression Language (eg: "${resource.path}") to call the getPath() method of a Resource object returned by ResourceResolver.findResources() result in error.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • JCR Resource 2.0.6
    • JCR Resource 2.0.8
    • JCR
    • None
    • CQ5.2.1/CQ5.3

    Description

      Often in the JSPs, we call the ResourceResolver.findResources(query, "xpath") method to return an Iterator<Resource> object, which we iterate through using JSTL and EL syntax. When we attempt to access the getPath() method of each Resource, the following exception is thrown:

      java.lang.IllegalAccessException: Class javax.el.BeanELResolver can not access a member of class org.apache.sling.jcr.resource.internal.helper.jcr.JcrItemResource with modifiers "public".

      This works with CQ5.2.1 with no problem before. The issue happens on CQ5.3 GA release.

      Example codes to re-produce the error in CQ5.3.

      Iterator<Resource> found = resourceResolver.findResources("//element(*, nt:unstructured)","xpath");
      while(found.hasNext()){
      try{
      Resource foundResource = found.next();
      pageContext.setAttribute("foundResource", foundResource);
      %>${foundResource.path}<%
      }
      catch(Exception e)

      { %><%=e.getMessage()%><% }

      }

      Attachments

        Activity

          People

            fmeschbe Felix Meschberger
            clzhang zhangchunlong
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: