2016-05-25 2 views
1

post/redirect/getパターンを使用してポストリクエストを変換して、「HTTPパスにマッピングされたあいまいなハンドラメソッド」エラーを防止します。詳細は、This questionを参照してください。ここでjava springのPost-Redirect-Getパターンを使用したポストリクエストを変換する

は、最初のコードです:

@Controller 
@RequestMapping("/bus/topologie") 
public class TopologieController { 
    private static final String VIEW_TOPOLOGIE = "topologie"; 

    @RequestMapping(method = RequestMethod.POST, params = { "genererCle" }) 
    public String genererCle(final Topologie topologie, final Model model) 
     throws IOException { 
     cadreService.genererCle(topologie); 
     return VIEW_TOPOLOGIE; 
    } 

私は本当にそれがPRGパターンを使用してコードを再する方法を理解していません。私が根底にある概念を理解していると思うとしても。

答えて

4

同じURLマッピングのGETリクエストを処理できる別のメソッドを追加する必要があります。 POSTメソッドではリダイレクトを行い、GETメソッドではすべてのビジネスプロセスを実行できます。

@Controller 
@RequestMapping("/bus/topologie") 
public class TopologieController { 
    private static final String VIEW_TOPOLOGIE = "topologie"; 

    @RequestMapping(method = RequestMethod.POST, params = { "genererCle" }) 
    public String genererClePost(final Topologie topologie, final RedirectAttributes redirectAttributes, @RequestParam("genererCle") final String genererCle, final Model model) 
     throws IOException { 
     redirectAttributes.addAttribute("genererCle", genererCle); 
     return "redirect:/bus/topologie"; 
    } 

    @RequestMapping(method = RequestMethod.GET, params = { "genererCle" }) 
    public String genererCleGet(final Topologie topologie, final Model model) 
     throws IOException { 
     cadreService.genererCle(topologie); 
     return VIEW_TOPOLOGIE; 
    } 
+0

これは私が以前行ったことですが、「TopologieControllerタイプのgenererCle(Topologie、Model)を重複しています」というエラーがあります。 – jayjaypg22

+0

@ jayjaypg22:そうですね。私は自分の答えを編集し、サポートされているリクエストメソッドにマッチする各メソッドに接尾辞を追加することによってメソッド名を変更しました。これはうまくいくはずです。 – perbellinio

+0

このコードを使用してデバッグしている間、POSTリクエストに入り、フォームにリダイレクトされますが、GETメソッドには入りません。 – jayjaypg22

関連する問題