2013-12-16 64 views

回答

9

假設你需要的節點是Page/jcr:content/yournode

Page對象有一個方法getContentResource()它默認返回你的jcr:content資源節點。您還可以使用page.getContentResource("yournode")獲取低於jcr:content的特定節點。

如果你的節點由於某種原因是兄弟jcr:content(它不應該btw),你可以使用resource.listChildren()來迭代資源的孩子。

請記住,這是所有Sling API,因此您正在管理資源,而不是節點。你可以使用一個資源從一個資源獲得一個JCR節點resource.adaptTo(Node.class)

+0

謝謝......它的工作! –

0

我想補充說,這可以通過將請求委託給一個servlet來解決,只要解決的問題需要分離關注點 - 將視圖從控制器邏輯。 LINK EXPLAINING IN DETAIL HOW VALIDATION IS DONE USING SLING SERVLETS

添加驗證器使用以下邏輯調用託管吊索的servlet

var url = CQ.HTTP.addParameter(dialog.path + '.validator.json', 'value', value); 
    var result = CQ.HTTP.eval(url); 

and in the servlet we access the node and its parents using below logic 
    final Node currentNode = request.getResource().adaptTo(Node.class); 
    try { 
     final Node par = currentNode.getParent(); 

     final NodeIterator nodes = par.getNodes(); 

     // get all form names for the current paragraph system 
     while (nodes.hasNext()) { //and the business logic 
+0

如果你找到這個幫助,請提高解決方案 – user2019339

1

一般每一頁類有用於檢索的節點的方法在jcr:content這是一個小清潔:

Node node = CurrentPage.getContentResource("COMPONENTNAME").adaptTo(Node.class); 

開發人員在將其調整到節點之前應檢查資源的存在。

既然我們有一個節點,我們可以從該節點提取屬性。

String title = node.getProperty("jcr:title").getString(); 

這樣您就可以獲取組件的任何屬性。