我一直在尝试将 Spring 框架集成到 AEM6/CQ5 中。
我正在关注本教程。关联
根据教程,我已经安装了 NEBA 包。所有 NEBA 包都在 OSGi 控制台中处于活动状态。
然后我创建了自己的 Maven CQ5 项目,添加了 Neba 注释和 Spring 的依赖项。我的项目也成功部署在 CQ5 中(捆绑包处于活动状态)。
我尝试使用 NEBA 的 ResourceModel 注释。但是这个模型并没有出现在 NEBA 的模型注册表中。我将 ResourceModel 映射到我创建的“linkComponent”的内容组件。
当用户将其拖放到任何 parsys 上时,资源节点具有属性linkName和linkURL。
我尝试在 JSP 中访问这些值,但失败了。
请参见下面的代码:package com.zensar.neba;
import org.apache.sling.api.resource.Resource;
import io.neba.api.annotations.Path;
import io.neba.api.annotations.ResourceModel;
@ResourceModel(types = "zensar-neba/components/content/linkComponent")
public class LinkComponent {
private String linkName;
private String linkURL;
public String getLinkName() {
return linkName;
}
public void setLinkName(String linkName) {
this.linkName = linkName;
}
public String getLinkURL() {
return linkURL;
}
public void setLinkURL(String linkURL) {
this.linkURL = linkURL;
}
}
请参阅下面的linkComponent的 JSP 代码:
<%@include file="/libs/foundation/global.jsp"%>
<%@taglib prefix="neba" uri="http://neba.io/1.0"%>
<neba:defineObjects />
Link Component
<a href="${m.linkURL}"> Click Here ${m.linkName}</a>
然后我尝试使用Spring 注释创建一个控制器,但我得到“找不到路径”我错过了什么。
请看下面的代码:
package com.zensar.neba;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class DemoController {
@RequestMapping("/echo/{param}")
@ResponseBody
public String echo(@PathVariable("param") String paramToEcho) {
return "Hello "+ paramToEcho;
}
}
我将控制器链接称为:http://localhost:4502/bin/mvc.do/echo/Oliver
重要提示:我所有的捆绑包都处于活动状态