我们已经向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中完成?
答案 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