Aem 用综合资源向前推进

Aem 用综合资源向前推进,aem,jcr,sling,Aem,Jcr,Sling,我试图构建一个Sling servlet,它从JCR返回一个修改过的资源值。我不想更改原始资源,所以我创建了一个合成资源并进行了操作。然后使用RequestDispatcher将其返回 下面的代码没有像预期的那样返回修改后的内容,我也没有在日志中看到任何错误。你能告诉我我做错了什么吗 @SlingServlet(methods=“GET”,resourceTypes=“sling/components/test”,selectors=“test”) 公共类TestServlet扩展了SlingS

我试图构建一个Sling servlet,它从JCR返回一个修改过的资源值。我不想更改原始资源,所以我创建了一个合成资源并进行了操作。然后使用RequestDispatcher将其返回

下面的代码没有像预期的那样返回修改后的内容,我也没有在日志中看到任何错误。你能告诉我我做错了什么吗

@SlingServlet(methods=“GET”,resourceTypes=“sling/components/test”,selectors=“test”)
公共类TestServlet扩展了SlingSafeMethodsServlet{
/**
* 
*/
私有静态最终长serialVersionUID=4078524820231933974L;
私有最终记录器log=LoggerFactory.getLogger(getClass());
@参考文献
资源解析工厂解析工厂;
受保护的void doGet(SlingHttpServletRequest请求、SlingHttpServletResponse响应)引发IOException{
Map param=new HashMap();
ResourceResolver解析器=null;
response.setContentType(“text/html”);
StringWriterResponse writerResponse=新StringWriterResponse(响应);
PrintWriter=response.getWriter();
试一试{
参数put(resourcesolverfactory.SUBSERVICE,“testService”);
最终字符串路径=request.getRequestPathInfo().getResourcePath();
resolver=resolverFactory.getServiceResourceResolver(参数);
final Resource=resolver.getResource(路径);
字符串resourceType=resource.getResourceType();
Resource testResource=新资源(解析器,
路径(资源类型){
公共T自适应(类类型){
if(type==ValueMap.class){
ModifiableValueMap=资源
.adapto(可修改的ValueMap.class);
地图放置(“jcr:标题”、“修改标题”);
返回(T)图;
}
返回super.adapto(类型);
}
};
RequestDispatcherOptions RequestDispatcherOptions=新的RequestDispatcherOptions();
requestDispatcherOptions.setReplaceSelectors(“”);
final RequestDispatcher RequestDispatcher=request.getRequestDispatcher(testResource,requestDispatcherOptions);
转发(请求,writerResponse);
//log.debug(writerResponse.getString());
writer.println(writerResponse.getString());
response.setStatus(HttpServletResponse.SC_OK);
}捕获(例外e){
日志错误(“异常:”,e);
}最后{
if(解析器!=null){
解析程序close();
}
if(writer!=null){
writer.close();
}
if(writerResponse!=null){
writerResponse.clearWriter();
}
}
}
}

使用将更简单,它可以返回实现所需更改的
ResourceWrapper
。当调用decorator的
decoration
方法时,只要小心,就可以使它在调用它不想修饰的
资源
时保持有效,因为它将调用所有
资源

谢谢你的回答。这帮助我解决了问题。