吊索 - 通过pageContext访问属性

时间:2013-05-28 17:34:28

标签: java performance sling

据我所知,pageContext可以访问许多方法 getPage,getRequest等等。所以简单访问就不会更好 您需要直接反对使用页面上下文?问题 我不知道你会怎么做所以说我有这个:

public void setProperties(PageContext context){
 ValueMap properties = (ValueMap) context.getAttribute("properties");
 Node currentNode = (Node) context.getAttribute("currentNode");

 pageHeader = properties.get("pageHeader", "")
}

工作正常。你会如何设置你特别需要的东西?我有 这但它似乎没有用。我只是得到**请检查是否声明 如果方法存在,则类型是正确的。

Resource resource = requestResolver.getResource("/content/my/resource");   

public void setProperties(){

ValueMap properties = (ValueMap) resource.getAttribute("properties");
Node currentNode = (Node) resource.getAttribute("currentNode");

}

1 个答案:

答案 0 :(得分:1)

检索ValueMap的关键是使用适配器框架并调整适当的资源或节点。 两者都实现了Adaptable接口,使您可以使Resource适应多种目标类型,如Node,ValueMap等。 http://sling.apache.org/apidocs/sling6/org/apache/sling/api/adapter/Adaptable.html http://sling.apache.org/documentation/the-sling-engine/adapters.html

以下示例显示如何检索只读ValueMap

ValueMap properties = resource.adaptTo(ValueMap.class);
String propertyValue = values.get("propertyName", String.class); 

如果需要修改ValueMap的内容,请转到PersistableValueMap。 http://sling.apache.org/apidocs/sling6/org/apache/sling/api/resource/PersistableValueMap.html

PersistableValueMap valueMap = resource.adaptTo(PersistableValueMap.class);
valueMap.put(key,value);
valueMap.save();