2017-05-19 6 views
0

私は春ブーツとThymeleafのテンプレートエンジンを使用「*」という表現を使用して、フォームのエラーをバインドできませんでしたし、私は、オプションの追加のためのth:classappend属性を使用してみてください#fields.hasErrors('*')表現Thymeleafは

を使用して< div>のHTMLタグのクラス「 - エラーが発生しました」
<form method="POST" action="/registration" class="form-signin"> 
     <h2 class="form-signin-heading">Create your account</h2> 

     <div class="form-group" th:classappend="${#fields.hasErrors('*')} ? 'has-error' : ''"> 
      <input name="username" type="text" class="form-control" placeholder="Username" autofocus="true"/> 
      <p class="alert alert-danger" th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></p> 
     </div> 

     <div class="form-group" th:classappend="${#fields.hasErrors('*')} ? 'has-error' : ''"> 
      <input name="password" type="text" class="form-control" placeholder="Password" autofocus="true"/> 
      <p class="alert alert-danger" th:if="${#fields.hasErrors('password')}" th:errors="*{password}"></p> 
     </div> 

     <div class="form-group" th:classappend="${#fields.hasErrors('*')} ? 'has-error' : ''"> 
      <input name="passwordConfirm" type="text" class="form-control" placeholder="Confirm your password" autofocus="true"/> 
      <p class="alert alert-danger" th:if="${#fields.hasErrors('passwordConfirm')}" th:errors="*{passwordConfirm}"></p> 
     </div> 

     <button class="btn btn-lg btn-primary btn-block" type="submit">Submit</button> 


    </form> 

が、私はこのエラー

が表現「*」を使用して、フォームのエラーをバインドできませんでした持っています。

私のコントローラメソッド

@RequestMapping(value = "/registration", method = RequestMethod.GET) 
    public String registration(Model model) { 
     model.addAttribute("userForm", new User()); 

     return "registration"; 
    } 

    @RequestMapping(value = "/registration", method = RequestMethod.POST) 
    public String registration(@ModelAttribute("userForm") User userForm, BindingResult bindingResult, Model model) { 
     userValidator.validate(userForm, bindingResult); 

     if (bindingResult.hasErrors()) { 
      return "registration"; 
     } 

     userService.save(userForm); 

     securityService.autologin(userForm.getUsername(), userForm.getPasswordConfirm()); 

     return "redirect:/welcome"; 
    } 

私が間違って何をやっている:(オブジェクト属性番目と例えば )この 式は十分なコンテキスト内で実行されているか確認してください?

+0

答えは 'この式が適切なコンテキスト内で実行されていることを確認してください(例えば、a:th:オブジェクト属性を持つ)'というエラーになります。あなたのフォーム要素は 'th:object =" $ {userForm} "'式を含んでいなければなりません。 –

+0

@ M.Deinumあなたは正しいです!ありがとう! –

答えて

0

私はちょうど私のフォーム要素にth:object="${userForm}属性を追加します。そして今、それは正常に動作します!