Spring MVCデータ検証方法(必見編)
データチェックはwebアプリケーションで非常に重要な機能であり、特にフォーム入力である。ここではヒップホップVappdatorを用いて検証し、JSR-303検証フレームが注釈スタイルをサポートする検証を実現しました。
一、jarパッケージの導入
データチェック機能を実現するには、必要なjarパッケージを導入する必要があります。
classmate-1.3.1.jar
ヒベルナ-vapdator-5.4.1.Final.jar
ヒベルナ-vapdator-annotationn processor-5.4.1.Final.jar
hibernate-vapdator-cdi-5.4.1.Final.jar
jboss-loging-3.3.0.Final.jar
vapdationn-appi-1.1.0.Final.jar
二、一般的なチェックノート
注釈
機能
@Null
オブジェクトがnullかどうかを検証します。
@NotNull
検証対象がnullでないかどうか
@アスsertTrue
Booleanオブジェクトがtrueかどうかを検証します。
@アスsertTrue
Booleanオブジェクトがfalseかどうかを検証します。
@Max(value)
NumberとStringオブジェクトが指定値以下かどうかを検証します。
@Min(value)
NumberとStringオブジェクトが指定値以上かどうかを検証します。
@Decimal Max(value)
コメントを検証する要素値は@DecimalMaxで指定されたvalue値以下です。
@Decimal Min(value)
コメントを検証する要素値は@DecimalMinで指定されたvalue値より大きいです。
@Digits(integer、fraction)
文字列が指定された書式の数字に合っているかどうかを確認します。integerは整数の精度を指定し、fractionは小数の精度を指定します。
@Size(min,max)
指定された範囲のオブジェクトの長さを検証します。
@Past
DateとCalendarオブジェクトが現在の時間前にあるかどうかを検証します。
@Future
DateとCalendarオブジェクトが現在の時間の後にあるかどうかを検証します。
@Pattern
Stringオブジェクトが正規表現に適合しているかどうかを検証します。
@NotBlank
文字列がNullかどうかチェックします。Trimの長さは0より大きいかどうか、文字列だけを確認し、前後のスペースを削除します。
@URL
合法的なurlかどうか検証します。
@メール
合法的なメールアドレスですか?
@CreditCard Number
合法的なクレジットカード番号かどうか検証します。
@Length(min,max)
文字列の長さを確認するには、指定の範囲内でなければなりません。
@NotEmpty
要素がNullかEmptyかを確認します。
@Range(min,max,message)
属性値を検証するには、適切な範囲でなければなりません。
三、実体類の修正
クラスの属性に表示します。
チェックの後、フォームの入力ボックスの後にテキストフィードバックを行う必要があります。
1.新規validatemessages.properties
これで、データチェックのプロセス全体が終了します。
最後に特に強調するポイントは:
表示中<form:errors path=“name”は、モデルの対応する属性のエラー情報を表示します。path=“*”の場合、モデルのすべての属性のエラー情報が表示されます。
以上のこのSpring MVCデータチェック方法(必見編)は小編が皆さんに提供した内容の全部です。参考にしていただければと思います。よろしくお願いします。
一、jarパッケージの導入
データチェック機能を実現するには、必要なjarパッケージを導入する必要があります。
classmate-1.3.1.jar
ヒベルナ-vapdator-5.4.1.Final.jar
ヒベルナ-vapdator-annotationn processor-5.4.1.Final.jar
hibernate-vapdator-cdi-5.4.1.Final.jar
jboss-loging-3.3.0.Final.jar
vapdationn-appi-1.1.0.Final.jar
二、一般的なチェックノート
注釈
機能
@Null
オブジェクトがnullかどうかを検証します。
@NotNull
検証対象がnullでないかどうか
@アスsertTrue
Booleanオブジェクトがtrueかどうかを検証します。
@アスsertTrue
Booleanオブジェクトがfalseかどうかを検証します。
@Max(value)
NumberとStringオブジェクトが指定値以下かどうかを検証します。
@Min(value)
NumberとStringオブジェクトが指定値以上かどうかを検証します。
@Decimal Max(value)
コメントを検証する要素値は@DecimalMaxで指定されたvalue値以下です。
@Decimal Min(value)
コメントを検証する要素値は@DecimalMinで指定されたvalue値より大きいです。
@Digits(integer、fraction)
文字列が指定された書式の数字に合っているかどうかを確認します。integerは整数の精度を指定し、fractionは小数の精度を指定します。
@Size(min,max)
指定された範囲のオブジェクトの長さを検証します。
@Past
DateとCalendarオブジェクトが現在の時間前にあるかどうかを検証します。
@Future
DateとCalendarオブジェクトが現在の時間の後にあるかどうかを検証します。
@Pattern
Stringオブジェクトが正規表現に適合しているかどうかを検証します。
@NotBlank
文字列がNullかどうかチェックします。Trimの長さは0より大きいかどうか、文字列だけを確認し、前後のスペースを削除します。
@URL
合法的なurlかどうか検証します。
@メール
合法的なメールアドレスですか?
@CreditCard Number
合法的なクレジットカード番号かどうか検証します。
@Length(min,max)
文字列の長さを確認するには、指定の範囲内でなければなりません。
@NotEmpty
要素がNullかEmptyかを確認します。
@Range(min,max,message)
属性値を検証するには、適切な範囲でなければなりません。
三、実体類の修正
クラスの属性に表示します。
public class User {
@NotBlank(message = "Username can not be empty")
private String username;
@NotBlank(message = "password can not be blank")
@Length(min = 6, max = 16, message = "The length of the password must be between 6 and 16 bits")
private String password;
@Range(min = 18, max = 60, message = "Age must be between 18 and 60 years old")
private Integer age;
@Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "Please enter the correct format of the phone number")
private String phone;
@Email(message = "Please enter a valid email address")
private String email;
// other...
}
四、対応する処理方法を修正する。
@RequestMapping(value = "/register")
public String register(@Valid @ModelAttribute("user") User user, Errors errors,Model model) {
if(errors.hasErrors()){
return "register";
}
model.addAttribute("user", user);
return "success";
}
五、ビュー出力チェックの後、フォームの入力ボックスの後にテキストフィードバックを行う必要があります。
<form:form modelAttribute="user" method="post" action="register">
<fieldset>
<legend>register</legend>
<p>
<label>name:</label>
<form:input path="username" />
<form:errors path="username" cssStyle="color:red"/>
</p>
...
</fieldset>
</form:form>
しかし、間違った情報を直接コメントに書くことを勧めない場合があります。これは国際化に不便です。したがって、以下のような修正ができます。1.新規validatemessages.properties
username.not.blank = "username cannot be empty..."
password.not.blank = "password cannot be empty"
password.not.length = "password should be in 6-10"
age.not.range = "age should be in 10-70"
phone.not.pattern = "phone should be in format"
email.not.format = "email should be in format"
2.実体類における注釈は相対参照を使用する
public class User {
@NotBlank(message = "{username.not.blank}")
private String username;
@NotBlank(message = "{password.not.blank}")
@Length(min = 6, max = 10, message = "{password.not.length}")
private String password;
@Range(min = 10, max = 70, message = "{age.not.range}")
private Integer age;
@Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "{phone.not.pattern}")
private String phone;
@Email(message = "{email.not.format}")
private String email;
// other...
}
3.プロファイルの変更
<!-- -->
<mvc:annotation-driven validator="validator" conversion-service="conversion-service" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<!-- classpath ValidationMessages.properties -->
<property name="validationMessageSource" ref="validatemessageSource"/>
</bean>
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:validatemessages"/>
<property name="fileEncodings" value="utf-8"/>
<property name="cacheSeconds" value="120"/>
</bean>
特に注意してください。value=「classipath:validatemessages」というファイル名は拡張子を付けません。これで、データチェックのプロセス全体が終了します。
最後に特に強調するポイントは:
表示中
以上のこのSpring MVCデータチェック方法(必見編)は小編が皆さんに提供した内容の全部です。参考にしていただければと思います。よろしくお願いします。