2016-05-17 13 views
1
@RequestMapping(method = RequestMethod.GET, value = "/add") 
    public ModelAndView add() throws ConferenceNotFoundException { 
     LOGGER.debug("Getting adding page"); 
     return new ModelAndView("conference/add", "form", new ConferenceForm()); 
    } 

    @RequestMapping(method = RequestMethod.POST, value = "/add") 
    public String handleAddConferenceForm(@Valid @ModelAttribute("form") ConferenceForm form, 
              BindingResult bindingResult, 
              @ModelAttribute("currentUser") CurrentUser currentUser) { 
     LOGGER.debug("Processing add conference form={}, bindingResult={}", form, bindingResult); 

     form.setHost(currentUser.getUser()); 

     if (bindingResult.hasErrors()) { 
      // failed validation 
      return "conference/add"; 
     } 
     try { 
      conferenceService.create(form); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     // ok, redirect 
     return "redirect:/"; 
    } 

enter image description here春のフォームの検証:ホワイトレーベルのエラーページ

私は上記のコードのような春のフォームを作ります。そしてそれは絵の上のようにうまく機能します。

@RequestMapping(method = RequestMethod.GET, value = "/{id}/admin/update") 
public ModelAndView update(Model model, 
          @PathVariable("id") Long id) throws ConferenceNotFoundException { 
    LOGGER.debug("Getting update page"); 

    Conference conference = conferenceService.findById(id); 
    model.addAttribute("conference", conference); 
    return new ModelAndView("conference/update", "form", new ConferenceForm(conference)); 
} 

@RequestMapping(method = RequestMethod.POST, value = "/{id}/admin/update") 
public String handleUpdateConferenceForm(@Valid @ModelAttribute("form") ConferenceForm form, 
             @PathVariable("id") Long id, 
             BindingResult bindingResult, 
             @ModelAttribute("currentUser") CurrentUser currentUser) { 
    LOGGER.debug("Processing update conference form={}, bindingResult={}", form, bindingResult); 

    form.setHost(currentUser.getUser()); 

    if (bindingResult.hasErrors()) { 
     // failed validation 
     return "conference/update"; 
    } 
    try { 
     conferenceService.update(form, id); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    // ok, redirect 
    return "redirect:/conferences/" + id + "/admin"; 
} 

enter image description here

そうでない場合は、上記のコードはうまく動作しません。バリデーターはうまく動作し、内容を更新します。しかし、バリデータが動作するときにはWhitelabel Error Pageが生成されます。

なぜそれがWhitelabel Error Pageを生成するのかわかりません。

答えて

2

問題の原因が見つかりました。

変更BindingResult bindingResultさんの場所。

から:

public String handleUpdateConferenceForm(@Valid @ModelAttribute("form") ConferenceForm form, 
            @PathVariable("id") Long id, 
            BindingResult bindingResult, 
             @ModelAttribute("currentUser") CurrentUser currentUser) 

へ:

public String handleUpdateConferenceForm(@Valid @ModelAttribute("form") ConferenceForm form, 
              BindingResult bindingResult, 
              Model model, 
              @PathVariable("id") Long id, 
              @ModelAttribute("currentUser") CurrentUser currentUser) 
+0

私は異なるパラメータを持っていたにもかかわらず、注文アップを変更することは、あまりにも私のために問題を解決しました。奇妙なことに、私は言うだろう。 –