2017-04-13 10 views
0

私はPRGパターンがページの重複投稿(POST)を防ぐことができることを知っています。しかし、私はwindow.history.back()リンクを持つJSPページを持っています。このリンクはPOSTだった前のページにユーザーを戻しますが、すべてのブラウザーに再送信の警告が表示され、リロードボタンを押すように指示します。私は、ユーザーがそのページに任意の確認なしに戻ることを許可したいと思います。 POSTコントローラは検索を行います。春のMVCで重複提出を許可する方法はありますか?

<a href="javascript:;" onclick="window.history.back();">...</a> 

を、エンドポイントは次のとおりです:JSPページInthe私が使用しています

 @RequestMapping(value="search.htm", method = RequestMethod.POST) 
    public String searchResults(Model model, @ModelAtrribute(value="search") Serach search, HttpServletRequest request){ 
...... 
} 

****私は再提出を防ぐためにしたくありません。

+0

あなたは、あなたが休暇history.back()またはPOSTが提出した場合に選択することはできません。したがって、ページのリダイレクトで最初のページを変更し、GETで2番目のページを変更することができます。 – Alessandro

+0

@Alessandro私は2番目の解決策を試しましたが、GETに戻った後、ModelAttributeは空であり、firt呼び出しだけでなく埋められません。 –

答えて

0

私は今それを試して、その「ガイドライン」のように、次の例を取ることができない...とにかく私はあなたがまだwindow.history.back()リンクを使用してmodelを維持するためにModelAttribute内SessionAttributesを使うべきだと思います。

だから、あなたは修正することができるあなたのControllerのように:

@Controller 
@SessionAttributes("searchObj") 
public class YourController { 
    @RequestMapping(value="search.htm") 
    public ModelAndView searchResults(@ModelAtrribute(value="search") Serach search){ 
     ModelAndView modelAndView = new ModelAndView(); 
     modelAndView.setViewName("search-result-page"); 

     modelAndView.addObject("search", search); 
     modelAndView.addObject("searchObj", search); 

     return modelAndView; 
    } 
} 
関連する問題