2010-11-26 6 views
0

私はMultiActionController内で検証を実装するために多くの試みをしましたが、それは普通のセーリングではないようです。 フォームを検証する必要があります。エラーが発生した場合は、同じフォームにリダイレクトしてエラーを表示し、データベースから情報を読み込むこともできます。 だから、基本的に私はこの持っている:私が欲しいものMultiActionControllerを使用して検証エラーを要求にバインドする方法はありますか?

@RequestMapping("/addResponse.htm") 
public ModelAndView addResponse(@ModelAttribute("responseDTO") ResponseDTO 
      respDTO, BindingResult result, HttpServletRequest request) { 

ResponseFormValidator respValidator = new ResponseFormValidator(); 
respValidator.validate(respDTO, result); 

if (result.hasErrors()) { 
    return new ModelAndView("redirect:responseForm.htm?id=" + respDTO.getProjID()); 
} 
} 

を検証プロセス(結果オブジェクト)もちろん 起因するエラーを覚えてresponseFormハンドラメソッドのためですが、私はそれからロジックをコピーして貼り付けることができます私のifステートメント内のメソッドが、私はそれがコピーと貼り付けよりも良い方法でなければならないと思っています。

ご協力いただきますようお願い申し上げます。

+0

'MultiActionController'と' @ RequestMapping'は互いに排他的です。どちらですか? – skaffman

+0

注釈を使ったMultiActionControllerです。 –

+0

@ariel_ro:私が言ったように、あなたはどちらか一方を使うことはできません。 – skaffman

答えて

0

3.1.xより前のSpringバージョンでは、オブジェクトをリダイレクトで渡す場合は、コントローラを「セッション」に対応させる必要があります。 http://static.springsource.org/spring/docs/2.5.x/reference/portlet.html#portlet-controller

を(部分16.9は、@SessionAttributeを探してください)しかし、それの後に、あなたはもう使用しないセッションに格納されているオブジェクト(複数可)をきれいにするあなたの責任です。

Spring 3.1.xでは、flashAttributeは非常に便利な操作であり、Springはそのための仕事をしています。原理を示すために少しコード]以下

http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-flash-attributes

@RequestMapping(value = "form", method = RequestMethod.GET) 
public String showForm(@ModelAttribute("form") FormBean formBean) { 

    // Set some properties if needed 

    return "tiles-litools-mml"; 
} 

@RequestMapping(value = "form", method = RequestMethod.POST) 
public String formAction(@Validated({MyValidator.class}) 
    @ModelAttribute("form") FormBean formBean, 
    BindingResult validatorresult, Model model, Errors errors, 
    RedirectAttributes redirectAttributes) { 

    //redirect if any error 
    if (validatorresult.hasErrors()){ 

     redirectAttributes.addFlashAttribute("message", "MML session failed"); 
     redirectAttributes.addFlashAttribute("form", formBean); 
     redirectAttributes.addFlashAttribute("validation", validatorresult); 
     return "redirect:/app/tools/form"; // redirect to the form GET method 

    } 

    // TODO continue code for process the form (valid!) 


} 

私はあなたがMultiActionControllerを拡張していないと仮定します。

+0

私はリダイレクトを使用しない場合、formBeanを設定する必要がありますか?私は現在、私のすべてのJSPについてセッションを開始しています。フォームページに戻ってエラーを表示することはできません。代わりに私に例外トレースを示しています。 – bertie

関連する問題