Spring mvc (3.1.1) アプリがあり、RequestMapping で利用できる条件を超えて条件を定義したいと考えています。使いたいことがいくつかあります。
まず、ユーザー タイプごとに異なるホームページを表示できるとよいでしょう。
@Controller
public class HomepageController {
@RequestMapping(value = "/")
@CustomCondition(roles = Guest.class)
public String guestHome() { /*...*/ }
@RequestMapping(value = "/")
@CustomCondition(roles = Admin.class)
public String adminHome() { /*...*/ }
}
次に、アプリを Web サイトと REST サービス (モバイル アプリなど) の両方として機能させたいので、Web サイトが html アクションと json アクションの両方にアクセスできるようにし、サービス (別のサブドメイン) のみにアクセスできるようにします。 json アクションへのアクセス ( @CustomCondition(web = true)
Web サイトの URL のみに一致するもの)
これは、私が計画している 2 つの用途のいずれにも使用できますか?
カスタム条件に関するドキュメントはほとんど見つかりませんでしたが、カスタム条件を実装する例が 1 つ見つかりました。クラスへのSpring xml定義全体。@Configuration
@Configuration
XMLで customMethodCondition を定義できRequestMappingHandlerMapping
ますか?
カスタムを返すためにサブクラス化RequestMappingHandlerMapping
とオーバーライドを試みましたが、うまくいきませんでした -私の状態では発火しませんでした。getCustomMethodCondition
RequestCondition
getMatchingCondition()
どんな助けでも大歓迎です!
アップデート
もう少し読んだところRequestMappingHandlerMapping
、新しいクラスのようです (ver 3.1 以降)。
私のアプリで何が起こるかは、Bean をオーバーライドして再定義しようとする @Configuration がrequestMappingHandlerMapping
実際に機能することですが、URL マッピング ( s@RequestMapping
内のメソッド) は、サブクラスによって1 回、元の--firstによって 1回、2 回処理されるようです。カスタム条件、およびそれなしで再び。@Controller
ExtendedRequestMappingHandlerMapping
RequestMappingHandlerMapping
要するに、私のカスタム条件は単に無視されるということです。
これは高度なパターンであるはずですが、IMO ではかなり一般的なはずです...
誰かコメントしますか?