2012-10-03 7 views
12

Spring MVCでは、コントローラとメソッド/アクションごとにどのようにRequestMappingを設定するのか分かります。Spring MVCリクエストマッピング。これは動的/設定可能ですか?

しかし、私は、これは、設定可能になりたかったので、もし例I以下のコントローラのために:私のアプリケーションでは今

BlogController 
- with methods for listing blogs entries, single entry, new, update, etc. 
ArticleController 
- with methods for listing articles entries, single entry, new, update, etc. 

ので、管理者セットアップできるwebisteのための2つのブログ、1つの記事のセクション管理者は、別の記事セクションを望んでいるので、彼らはただのような新しいセクションであることを設定しながら、後に多分

www.example.com/article_section1/ - uses ArticleController 
www.example.com/blog1/ - uses BlogController 
www.example.com/blog2/ - uses BlogController 

のURLは次のようになります

これはもちろん、アプリケーションを再起動しなくても動的に/オンザフライで動作する必要があります。

私の質問は、コントローラへのURLマッピングをどのように処理するかにのみ関係しています。

これはSpring MVCではどのように可能ですか?

コントローラーまたはメソッドレベルで@RequestMapping("/helloWorld")を使用するコントローラーにURLをマップする方法しかわかりませんが、これによりURLマッピングが固定され、必要なように構成できなくなります。

更新:

Iは次のようにコントローラのタイプへのマッピングであり、データベース内のパスを格納する:私はどのようにディスパッチすることができ、上記の情報と

path     controller 
/article_section1/ article 
/blog1/    blog 
/blog2/    blog 
.. 

、正しいコントローラへのリクエスト?

ここでも、再デプロイ/再ロードするために探して、私は、これはより多くの作業が、その仕様にする必要があります実現していない:)

+1

これをどのように実装したのですか?私も同様の状況にあります。 – DairyLea

答えて

5

でしょうあなたのためのURLマッピング作業のこの種のは?

www.example.com/blog/1/ 
www.example.com/blog/2/ 

yesの場合、それは簡単です:春3は、パス変数をサポートしていますhttp://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

はまた、あなたは、一般的な要求のマッピングと設定ファイルを読み込み、独自のサブディスパッチャを作成することができますが、私はのことを考えますおそらくそれは価値があるよりも多くの仕事。

+3

私はURLを完全に制御したい、私はパス変数について知っている。実際には、データベースからパスを読み込み、何らかの方法で正しいコントローラに要求を転送しますが、その方法はわかりません。 – loyalflow

0

これは機能しませんか? @RequestMapping( "/ helloWorld *")

2

実行時にリクエストマッピングを本当に変更するのは難しいかもしれません(小さなエラーが発生しやすいため、実際はお勧めできません)。それでもやりたいのであれば、おそらくJRebelです。具体的には、LiveRebelはコードと設定のライブ再デプロイメントにとって面白いことがあります。

他の投稿と同様に、RequestMappingsではワイルドカードがサポートされていますが、公式ドキュメントをすばやく読んだあと、この制限は明確になります。

+2

いいえURLを完全に制御したいので、これはうまくいかず、コードを再読み込み/再デプロイしたくありません。私はどういうわけか、何らかの形で要求を正しいコントローラに転送できることを期待していました。 – loyalflow

+3

あなた自身のHandlerMappingを書くことは面白いかもしれませんhttp://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/HandlerMapping.html –

+0

このリンクをありがとう、これは必要条件を守らなければなりません。 – loyalflow

1

は、以下のようにワイルドカードを@RequestMappingで使用してみてください:

@RequestMapping(value="/article_section*/"} 
public void getArticle(....){ 
//TODO implementation 
} 

@RequestMapping(value="/blog*/"} 
public void getBlog(....){ 
//TODO implementation 
} 

・ホープ、このことができます!

関連する問題