0

私は現在、hibernate-distribution-3.6.4.Finalを使用しています。 Hibernate Validatorを初めて使用する。Hibernate Validatorは、Spring Frameworkを使用せずにエラーメッセージを取得します。

問題: databean/formbeanにアノテーションを追加したときのエラーメッセージを取得するにはどうすればよいですか?私は春に誰もがclasspathからmessages.propertiesファイルを使用しているようだと知っていますか?

しかし、純粋な休止状態3については、そのようなファイルがありますか、代わりに何をすべきですか? (オンラインで良い答えを見つけられませんでした...)

答えて

1

これは役に立ちます。ソースは:Mastering Spring MVC

有効にするにはもう少し追加する必要があります。まず、コントローラはフォーム提出時に有効なモデルを望んでいると言う必要があります。フォームにエラーがある場合は、ユーザーをリダイレクトしていない

@RequestMapping(value = "/profile", method = RequestMethod.POST) 
public String saveProfile(@Valid ProfileForm profileForm, 
BindingResult bindingResult) { 
if (bindingResult.hasErrors()) { 
return "profile/profilePage"; 
} 
System.out.println("save ok" + profileForm); 
return "redirect:/profile"; 
} 

注:フォームを表すパラメータに

import org.hibernate.validator.constraints.Email; 
    import org.hibernate.validator.constraints.NotEmpty; 

として注釈WELとして javax.validation.Validを追加するだけのことを行います。これにより、同じWebページに表示することができます。それについて言えば、それらのエラーが表示される場所をWebページに追加する必要があります。 profilePage.htmlにこれらの行を追加します。

<form th:action="@{/profile}" th:object="${profileForm}" 
...."> 
<div class="row"> 
<div class="input-field col s6"> 
<input th:field="${profileForm.twitterHandle}" 
id="twitterHandle" type="text" th:errorclass="invalid"/> 
<label for="twitterHandle">Twitter handle</label> 
<div th:errors="*{twitterHandle}" class="redtext"> 
Error</div> 
</div> 
<div class="input-field col s6"> 
<input th:field="${profileForm.email}" id="email" 
type="text" th:errorclass="invalid"/> 
<label for="email">Email</label> 
<div th:errors="*{email}" class="red-text">Error</div> 
</div> 
</div> 
<div class="row"> 
<div class="input-field col s6"> 
<input th:field="${profileForm.birthDate}" 
id="birthDate" type="text" th:errorclass="invalid" th:placeholder="${ 
dateFormat}"/> 
<label for="birthDate">Birth Date</label> 
<div th:errors="*{birthDate}" class="red-text">Error</ 
div> 
</div> 
</div> 
<div class="row s12"> 
<button class="btn indigo waves-effect waves-light" 
type="submit" name="save">Submit 
<i class="mdi-content-send right"></i> 

</button> 
</div> 
</form> 

はい確かに、春ブーツは、私たちのメッセージソースBeanを作成するの面倒を見ます。

Size.profileForm.twitterHandle=Please type in your twitter user name 
Email.profileForm.email=Please specify a valid email address 
NotEmpty.profileForm.email=Please specify your email address 
PastLocalDate.profileForm.birthDate=Please specify a real birth date 
NotNull.profileForm.birthDate=Please specify your birth date 
typeMismatch.birthDate = Invalid birth date format 

:このメッセージソースの デフォルトの場所は、このようなバンドルを作成し、次のテキストを追加し

src/main/resources/messages. 
properties. 

です。 enter image description here

+0

ありがとうございます!あなたは純粋な休止状態のために言及した "バンドル"をどのように作成できますか?これは実際に私を最も混乱させた部分です。 –

+0

申し訳ありませんが、これは純粋な休止状態ではありません。これらのアノテーションは、Beanの検証を指定するJSR-303仕様に基づいています。この仕様の最も一般的な実装は、Springブートに含まれているhibernate-validatorです。純粋な休止状態の場合は、文書を検索する必要があります –

+0

申し訳ありませんが、私はあなたの質問を誤解していました。私はあなたが春の実施を頼んだと思った。 –

関連する問題