2

AEM6/CQ5 内に Spring フレームワークを統合しようとしています。

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

チュートリアルに従って、NEBA パッケージをインストールしました。すべての NEBA バンドルが OSGi コンソールでアクティブになります。

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

NEBA の ResourceModel アノテーションを使ってみました。しかし、このモデルはNEBAのモデル登録簿には載っていません。「linkComponent」を作成したコンテンツ コンポーネントに ResourceModel をマッピングしました。

ユーザーが任意の 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

重要な注意: すべてのバンドルがアクティブです

4

2 に答える 2

1

すべてのバンドルが稼働中で、モデル レジストリが表示されている場合は、すべてがスムーズに実行されていることを意味します。ただし、モデルが表示されません。これは、バンドルのアプリケーション コンテキストが実行されていないことを意味します。NEBA は、OSGi ブループリント仕様の参照実装であるジェミニ ブループリントを使用します。

バンドルの OSGI-INF/blueprint フォルダーに xml ファイル (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 を使用したサンプル Web アプリケーションを次に示します: https://github.com/unic/publication-neba-adaptto-2015

もう 1 つ: NEBA はプライベート フィールド インジェクションを使用するため、Bean にセッターを設定する必要はありません。

于 2016-07-05T23:37:09.300 に答える