5

次の例を検討してください。

@Controller
@RequestMapping({"/home"})
public class Home {
    @RequestMapping(value = { "", "/" })
    public String index() {
        return "home";
    }
    @RequestMapping(value = { "-of-{id}" })
    public String of(@PathVariable("id") String id) {
        System.out.println(id);
        return "home";
    }
}

index() は '/home' と '/home/' に完全にマップされます。しかし、of(id) は、'/home-of-{id}' にマップしたいときに '/home/-of-{id}' にマップされます。

Spring は '/home' と '-of-{id}' の間にスラッシュを自動的に追加しますが、それを削除したいのですが、何か提案はありますか?

4

2 に答える 2

6

クラスレベルのマッピングを定義すると、Spring はメソッドレベルのマッピングを文字列連結としてではなく、追加のセグメントとして扱います。/home-of-{id}したがって、試みているアプローチを使用して取得することはできません。

クラスレベルの を取り除き@RequestMapping、既存のメソッドレベルのマッピングを完全に明示的なパスに置き換えてみてください。着る。@RequestMapping("/home-of-{id}")_of()

/home/サポートしたいパスがたくさんある場合 (したがって、クラス レベルの定義を維持したい場合) は/home-of-{id}、 を別のコントローラーに移動するだけで、それを行うことができます。

于 2012-01-29T01:29:25.920 に答える
1

クラス レベルのマッピングを削除し、各メソッドをマッピングします。クラスとメソッドをマップすると、それらは階層化されます。

(または別のクラスを作成します。)

于 2012-01-29T01:30:26.637 に答える