0

ブロッサム2とマグノリア4.5を使用して、私は次のようなことをしようとしています。

@Controller
@Template(id = "topicpages:pages/topics", title = "MyTemplate")
public class TopicTemplate {
...
@TabFactory("DialogInclude2")
public void topicTagTab2(TabBuilder tab){
tab.addInclude("topicpages/pages/topicLayout.jsp");
}
...
}

コードにはもう少しありますが、これは関連する部分だと思います。問題は、この方法でJSPをインクルードしようとすると、次のエラーが発生することです。2013年1月3日14:48:33 org.springframework.web.servlet.DispatcherServlet noHandlerFound警告:HTTPリクエストのマッピングが見つかりません。 'controller'という名前のDispatcherServletのURI[/.magnolia/dialogs/topicpages/pages/topicLayout.jsp]

http://wiki.magnolia-cms.com/display/WIKI/Creating+a+custom+control+with+DialogIncludeにあるdialogincludeのチュートリアルに精通していますが、これを行う方法がわかりません。コントロールを使用するためのダイアログでは、値が「include」のcontrolTypeという名前のコンテンツノードと、値がインクルードされるJSPの場所である別の名前付きファイルを定義する必要があります。」私のダイアログはすべてBlossomを介して作成されているためです。

4

1 に答える 1

1

forum.magnolia-cms.comから:

Re:addIncludeを使用してカスタムマグノリアコントロールを作成する

2 by tmattsson、2013年1月8日11:04:27 AM

/.magnolia/dialogs/topicpages/pages/topicLayout.jspJSPへの相対パスを指定しているため、コントロールをレンダリングするために行われたインクルードリクエストはに送信されます。それがで始まる理由/.magnolia/dialogs/です。それが意図されていない場合は、JSPへの絶対パスを使用する必要があります。リクエストは、このパスに一致するコントローラー(ハンドラー)を持たないDispatcherServletという名前のSpringによって処理されます。controller

JSPをWEB-INFフォルダに直接配置して、でアクセスできるかどうかを確認してくださいaddInclude("/WEB-INF/topicLayout.jsp")

コントローラーがコントローラー(ハンドラー)をレンダリングするincludeSpringに対してを実行しようとしている場合は、モジュール記述子でそれを構成し、それとその中のコントローラーをターゲットにすることができます。この場合、拡張機能は必要ありません。次のようになります。DispatcherServletinclude.jspaddInclude("/custom-controls/topicLayout");

WEB-INFセキュリティ上の理由から、JSPファイルを外部からアクセスできないフォルダに保存しておくことをお勧めします。同様に、管理インターフェース内でエディターをサポートするために追加する機能が外部から公開されないように注意する必要があります。以下にマップされているもの/.magnoliaはすべて保護されており、ログインが必要です。

お役に立てば幸いです。

//トビアス

于 2013-01-09T16:00:37.387 に答える