1

私のメインコントローラーはパブリックユーザーにサービスを提供します。次のマッピングがあります。

@Controller
@RequestMapping(value="/") 
public class HomeController extends BaseController {

@RequestMapping("/") // handles www.somesite.com
public ModelAndView request(Model model) {

@RequestMapping("/{contentId}")  // handles www.somesite.com/sports
public ModelAndView requestWithContentId(@PathVariable String contentId, Model model) {

@RequestMapping("/{contentId}/**") // handles www.somesite.com/sports/hockey/nhl , etc
public ModelAndView requestWithContentId2(@PathVariable String contentId, Model model) {

また、/admin* に一致するパスにマップする管理コントローラーのセットもあります。一例を次に示します。

@Controller
@RequestMapping(value="/admin/article")
public class AdminArticleController extends BaseController
  1. メインコントローラーのマッピングの方が優先度が高いことがわかりました。したがって、/admin/article の要求は、専用の AdminArticleController ではなく、メイン コントローラーによって処理されます。どうすればこれを修正できますか?

  2. また、/static/default.css にあるスタイル シートの要求も、メイン コントローラーを経由していることに気付きました。これを回避する方法はありますか?

4

1 に答える 1

2

URL スキームを変更します。Spring MVC で変数を使用して URL を開始することは、先ほど説明した理由から、かなり悪いことです。

コンテンツ リンクを次のように変更するか/content/{contentId}、すべてのコンテンツに対して明示的なマッピングを作成し/sportsます/whatever

最後の手段として、URL スキームがユーザーにどのように表示されるかを絶対に変更できない場合は、Tuckey urlrewriteなどを使用して書き換えます。

/xyz -> /content/xyz

「admin」や「static」などの「既知の」コンテキストを除きます。

于 2012-05-03T11:40:26.330 に答える