0

据我了解,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");

}
4

1 回答 1

1

检索 ValueMap 的关键是使用 Adapter 框架并适配适当的 Resource 或 Node。两者都实现了 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(); 
于 2013-06-07T19:37:00.953 回答