Как currentNode внедряется в JSP-файл CQ5?

Я читаю руководства, и в первом примере , home.jsp определяется как:

<%@page session="false"%>
<%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling/1.0"%>
<sling:defineObjects/>

<%@ page import="javax.jcr.Repository,
                   javax.jcr.Session,
                   javax.jcr.SimpleCredentials,
                   javax.jcr.Node,
                   java.net.URLEncoder,
                   java.util.List,
                   java.util.Iterator,
                   javax.jcr.Value,
                   javax.jcr.RepositoryException"%>

<html>
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
  <title><%= currentNode.getProperty("title").getString() %></title> 
</head> 
<body> 
  <div>
    <h1><%= currentNode.getProperty("title").getString() %></h1>
    <br>
    <%= currentNode.getProperty("body").getString() %>
  </div>
</body> 
</html>

Я думал, что <sling:defineObjects> внедряет currentNode, но согласно теговым документам это не так.

Так что же тогда инжектирует?


person TheFooProgrammer    schedule 12.02.2014    source источник


Ответы (1)


Ваша первоначальная мысль была правильной, <sling:defineObjects> действительно устанавливает это значение. Документы тега, на которые вы ссылаетесь, описывают атрибуты самого тега (т. е. значения, которые вы можете передать ВНУТРИ тега), а не значения, которые он устанавливает.

Если вы посмотрите на код DefineObjectsTag здесь вы можете видеть, что currentNode — это одна из вещей, которая добавляется в контекст страницы.

person mszu    schedule 12.02.2014