2016-06-17 2 views
2

Я пытаюсь интегрировать Spring framework в AEM6/CQ5.Интеграция AEM/CQ5 и Spring Framework?

Я следую этому руководству. LINK

В соответствии с учебным пособием я установил пакет NEBA. Все пакеты NEBA активны в консоли OSGi.

Затем я создал свой собственный проект Maven CQ5, я добавил зависимости аннотаций Neba и Spring. Мой проект также был успешно развернут в CQ5 (пакет активен).

Я попытался использовать аннотацию ResourceModel NEBA. Но эта модель не появляется в реестре моделей 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; 
    } 


} 

Пожалуйста Смотрите JSP Код linkComponent ниже:

<%@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

ВАЖНО: Все мои связки активны

ответ

1

Если все пучки запускаются, и вы видите реестр моделей, это означает, что ev все идет гладко. Но: ваша модель не отображается, это означает, что контекст приложения вашего пакета не запущен. NEBA использует gemini-blueprint, эталонную реализацию спецификации OSGi.

У вас есть xml-файл, например. blueprint.xml, в папке OSGI-INF/blueprint вашего пакета? Это должно выглядеть так:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.osgi.org/xmlns/blueprint/v1.0.0 
    http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 

    <context:component-scan base-package="com.zensar.neba" /> 
</beans> 

Если вы это сделаете, что говорит ваш error.log, когда ваш комплект запущен? Для справки, здесь приведен пример webapp с использованием NEBA: https://github.com/unic/publication-neba-adaptto-2015

Еще одна вещь: NEBA использует частную инъекцию в поле, так что вам не нужно иметь никаких сеттеров для вашего компонента.

+0

Привет @Olaf У меня нет этого xml-файла. можете ли вы сказать мне, где разместить этот файл в моем проекте CQ5 Maven. – Oliver

+0

Если бы у меня было сто миллионов долларов, я бы вам их. Я добавил context.xml и все работало благодаря – Oliver

0

Я рад, что помог! Чтобы ответить на ваш последний вопрос: в проекте maven правильное место для XML-файла чертежа будет находиться в папке src/main/resources/OSGI-INF/blueprint модуля maven, содержащей ваши модели/контроллеры.

 Смежные вопросы

  • Нет связанных вопросов^_^