如何在CQ中呈现一个简单的JSP页面?

时间:2014-08-14 04:18:51

标签: cq5 sling aem

我们已经向CQ5部署了一个AngularJS应用程序。目前,此应用的观看次数只是静态HTML文件,并存储在下面,例如/apps/myapp/views/

  • /apps/myapp/views/list.html
  • /apps/myapp/views/view.html

Angular然后将AJAX请求发送到服务器并根据需要加载和呈现这些视图。

我们想为这些网页添加一些动态内容。例如:

<% if (isGordonFreeman()) { %>
    <button>Launch the Hadron Collider!</button>
<% } %>

如何在CQ中完成?

1 个答案:

答案 0 :(得分:2)

您不能直接在CQ5中呈现JSP,因为Sling只呈现内容/资源而不是脚本。

作为一个quix修复,你可以创建一个nt:unstructured节点,sling:resourceType属性设置为jsp的路径(如下所示)

list: {
    sling:resourceType: "/apps/myapp/views/list.jsp",
    jcr:primaryType: "nt:unstructured"
},
view: {
    sling:resourceType: "/apps/myapp/views/view.jsp",
    jcr:primaryType: "nt:unstructured"
}

然后在AJAX请求中调用这些路径。

但是,不建议直接指向脚本,正如@BertrandDelacretaz正确指出的那样。您可以使用可以为您的请求提供服务的组件。如果要创建的组件太多,那么您可以在selectors的帮助下为您的请求提供单个组件服务。

例如,您的组件结构可能如下所示。

/apps/myapp/views
    |_ list.jsp
    |_ view.jsp
    |_ anythingelse.jsp

资源(比如/content/myapp/views)现在将sling:resourceType作为/apps/myapp/views。 你的AJAX请求将是

/content/myapp/views.list.html
/content/myapp/views.view.html
/content/myapp/views.anythingelse.html