2017-05-13 10 views
0

私は単純なspring mvcアプリケーションを持っています。 dbにはユーザーが格納されています。私は2つのテキストフィールドとボタン(ユーザー名、パスワードと提出)とhtmlページがあります。ユーザー名とパスワードがデータベースにある場合はログインできますが、そうでない場合はテキストフィールドの他に小さなメッセージ(User does not exist)を表示したいと思います。これは私のhtmlページが現時点で見ているものです。現時点でログインの試行でHTMLに通知を動的に表示する方法

<form action="/login" th:object="${customer}" method="POST"> 
      <div class="form-group"> 
       <label class="form-label" for="username">Username</label> 
       <input class="form-control" type="text" th:field="*{username}" id="username" /> 
       <p th:if="${#fields.hasErrors('username')}" th:errors="*{username}"> Username Error</p> 
      </div> 
      <div class="form-group"> 
       <label class="form-label" for="password">Password</label> 
       <input class="form-control" type="text" th:field="*{password}" id="password" /> 
       <p th:if="${#fields.hasErrors('password')}" th:errors="*{password}"> Password Error</p> 
      </div> 

      <input class="button" type="submit" value="Submit" /> 
     </form> 

、それは(ユーザーが何も入力しない場合、またはユーザーが2つの未満の文字を入力した場合、すなわち時)が、私は、通知を表示するために取得するように見えることはできませんいくつかの検証を示しています。私はこれをコントローラ(コントローラのスニペット)に追加しようとしました:

if(customerUsingQuery != null){ 
      ... 
     }else{ 
      bindingResult.addError(new ObjectError("customer","User does not exist in database.")); 

      resultTemplate = HOME_TEMPLATE; 
     } 

しかし、バインディング結果はフォームに表示されません。

答えて

0

フィールドの横にエラーを表示するには、FieldErrorを使用します。 ユーザ名フィールドの例:

bindingResult.addError(new FieldError(bindingResult.getObjectName(), "username", "User does not exist in database.")); 

注:認証失敗時に、それはユーザーが資格情報が悪かっただけで、システム内に存在する場合は表示されませんことをお勧めします。

は、 ObjectError Sを含め、フォームのすべてのエラーを表示するようにThymeleafコードを使用するには:

<p th:each="err : ${#fields.allErrors()}" th:text="${err}">Invalid input.</p> 
関連する問題