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
重要な注意: すべてのバンドルがアクティブです