如何在cq5中设置会话属性

1 java jsp sling aem

我是cq5的新手,请帮忙!! 我试图在session属性中设置hashmap.但由于某种原因,我得到JSP无法编译.请帮忙!!

   <%@include file="/apps/test/test2/global.jsp"%>
         <%@page session="false"
          import="org.apache.sling.api.resource.ValueMap,
                  com.day.cq.wcm.api.WCMMode,
                  com.day.cq.dam.scene7.api.net.NetUtils,
                  org.apache.commons.lang.StringUtils,
                  javax.jcr.Session,
                  org.apache.jackrabbit.api.security.user.UserManager,
                  org.apache.jackrabbit.api.security.user.Authorizable"  %>

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


      <%
         Session session = resourceResolver.adaptTo(Session.class);
         Map<String, String> sessionValues = new HashMap<String, String>(); 

        for(int i=0;i<5;i++)
        {
          sessionValues.put("Id"+i, properties.get("test:Id"+i, "")); 
          sessionValues.put("Url"+i,properties.get("test:Url"+i,""));    
         }
       // put the hashmap as session    
         session.setAttribute("map", sessionValues);

         %>
Run Code Online (Sandbox Code Playgroud)

Sha*_*ppa 5

您拥有的会话是一个存储库会话,它与HTTP 会话非常不同.Javax.jcr.Session是您访问内容存储库的门户.它不用于存储与会话相关的属性,也没有任何setAttribute方法.它用于读取和写入存储库(http://jackrabbit.apache.org/jcr/how-jackrabbit-works.html).如果你所寻找的都是一个http会话,你应该从slingRequest获得它.

但是,如果您使用http会话,则无法在调度程序中缓存页面(https://forums.adobe.com/thread/960708)