2016-06-17 26 views
2

私はAEM6/CQ5内でSpringフレームワークを統合しようとしています。AEM/CQ5とSpringフレームワークの統合

私はこのチュートリアルに従っています。 LINK

私はNEBAパッケージをインストールしました。 すべてのNEBAバンドルは、OSGiコンソールでアクティブです。

私は自分のMaven CQ5プロジェクトを作成しました。NebaアノテーションとSpringの依存関係を追加しました。私のプロジェクトもCQ5に正常に導入されました(バンドルはアクティブです)。

NEBAのResourceModelアノテーションを使用しようとしました。しかし、このモデルはNEBAのモデルレジストリには現れません。 "linkComponent"を作成したコンテンツコンポーネントにResourceModelをマップしました。

ユーザがドラッグおよび任意parsysでこれをドロップすると、リソースノードプロパティLINKNAMElinkURLを有しています。

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> 

それから私は、春の注釈を使用してコントローラを作成しようとしたが、私は私が何をしていますが、 "パスが見つかりません" てしまいました行方不明

以下のコードを参照してください。

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

アクティブになっています起動していて、モデルレジストリが表示されていれば、それはe非常にスムーズに動作しています。しかし、モデルが表示されない場合は、バンドルのアプリケーションコンテキストが実行されていないことを意味します。 NEBAは、OSGiブループリント仕様のリファレンス実装であるgemini-blueprintを使用します。

xmlファイルがありますか?あなたのバンドルのOSGI-INF/blueprintフォルダにあるblueprint.xml?

<?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は何を言っていますか? NEBAを使用したサンプルwebappを参考にしてください:

もうひとつ:NEBAはプライベートフィールドインジェクションを使用しているため、Beanにセッターを置く必要はありません。

+0

こんにちは@Olaf私はこのXMLファイルを持っていません。このファイルをCQ5 Mavenプロジェクトに配置する場所を教えてください。 – Oliver

+0

もし私が億ドルを持っていたら、私は彼らにあなたを連れて行きます。私はcontext.xmlを追加しました。 – Oliver

0

私は助けてうれしいです!あなたの最後の質問に答えてください:mavenプロジェクトでは、青写真XMLファイルの正しい場所は、モデル/コントローラを含むmavenモジュールのsrc/main/resources/OSGI-INF/blueprintフォルダにあります。

関連する問題