シリーズ(4)および(5)では、データをバインドする方法と、拘束力のあるデータの後に得られるデータの正しさを確保する方法を示しますか?これは、この記事 - >データ検証で説明することです。
ここでは、検証のためにHibernate-Validatorを使用します。 Hibernate-Validatorは、注釈スタイルの検証をサポートするために、JSR-303検証フレームワークを実装しています。まず、必要なJARパッケージをhttp://hibernate.org/validator/にダウンロードする必要があります。ここでは、デモとして4.3.1.ファイナルを使用します。減圧後、3つのパッケージHibernate-Validator-4.3.1.final.jar、jboss-logging-3.1.0.jar、validation-api-1.0.0.ga.jarをプロジェクトに追加します。
以前のプロジェクトでspringservlet-config.xmlファイルを構成します。
<! - デフォルトのアノテーションマッピングのサポート - > <MVC:Annotation-driven validator = "Validator" Conversion-Service " /> <Bean id =" Vilidator "> <Property name =" propiderClass "value =" org.hibernate.validator.hibernatevalidator " <プロパティ名= "validationmessageSource" ref = "validatemessageSource"/> </bean> <bean id = "convention-service"/> <bean id = "validatemessagesource"> <property name = "basename" value = "classpath:balidatemessages"/>> <property names "value =" utf-8 " value = "120"/> </bean>
classPath:<プロパティ名= "basename" value = "classpath:validatemessages"/>のvalidateMessagesは、注釈確認メッセージが配置されているファイルであり、リソースフォルダーに追加する必要があります。
com.demo.web.controllersパッケージにvalidatecontroller.javaコンテンツを追加します。
パッケージcom.demo.web.controllers; import java.security.nosuchalgorithmexception; import javax.validation.valid; import org.springframework.stereotype.controller; import org.springframework.ui.ui.ui.model; immortframework.validention.Binding; org.springframework.web.bind.annotation.modelattribute; Import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.Requestmethod; Import com.demo.web.models.validatemodel;@validatemodel; "/validate")public class validatecontroller {@requestmapping(value = "/test"、method = {requestmethod.get})public string test(model model){if(!model.containsattribute( "contentmodel")){model.addattribute( "contentmodel"、new balidatemodel( "); } "validatetest"を返します。 } @RequestMapping(value = "/test"、method = {requestmethod.post})public string test(Model model、@valid @modelattribute( "contentModel")validatemodel validAtemodel、bindingResult result)がNosuchalgorithMexcectionを投げます{//テスト(モデル); "vilateduccess"を返します。 }}@valid @modelattribute( "contentmodel")validatemodel validatemodel @validは、データを@modelattribute( "contentmodel")にバインドした後に検証することを意味します。
com.demo.web.modelsパッケージにvalidatemodel.javaコンテンツを次のように追加します。
パッケージcom.demo.web.models; Import org.hibernate.validator.constraints.email; Import org.hibernate.validator.constraints.notempty; import org.hibernate.validator.constraints.range; public class balidAteModel {@notempty(@not.not.not.not. ") @range(min = 0、max = 150、message = "{age.not.inrange}")private string age; @notempty(message = "{email.not.empty}")@email(message = "{email.not.correct}")private string email; public void setName(string name){this.name = name; } public void Setage(string age){this.age = age; } public void setemail(string email){this.email = email; } public string getname(){return this.name; } public string getage(){return this.age; } public string getemail(){return this.email; }}次のコンテンツを、注釈確認メッセージが配置されているファイルに追加されます。
name.not.empty =/u540d/u79f0/u4e0d/u80fd/u4e3a/u7a7a/u3002age.not.inrange =/u5e74/u9f84/u8d85 /u51fa/8303/u56f4/u3002email.not.correct=/u90ae/u7bb1/u5730/u5740/u4e0d/u6b63/u786e/u3002em ail.not.empty =/u7535/u5b50/u90ae/u4e0d/u80fd/u60df/u6050/u3002email.not.empty =/u7535/u5b50/u 90ae/u4e0d/u80fd/u6050/u3002email.not.empty =/u7535/u5b50/u90ae/u4e0d/u80fd/u60df/u6050/u3002
その中で、name.not.emptyなどは、validatemodel.javaファイルのmessage =” xxx”のxxx nameに対応しています。次のコンテンツは、中国語で自動的に変換されるASCIIエンコードに入力されます。もちろん、別のvalivAteMessages.propertiesファイルを作成して追加することなく、XXXをプロンプトコンテンツとして直接記述することもできます。ただし、これは間違っています。なぜなら、ハードコードすると、国際化することができないからです。
Viewsフォルダーに2つのビューを追加します。それぞれvalidatetest.jspとそれぞれ検証ccess.jsp:
<%@ page Language = "Java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! Taglib freix = "form" uri = "http://www.springframework.org/tags/form"%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <タイトルModelAttribute = "ContentModel" Method = "post"> <form:errors path = "*"> </form:errors> <br/> name:<form:input path = "name"/> <br/> <form:errors path = "name"> </form:errors> <br/> error> <br/> age:<form:<form = "age"/> <br/電子メール:<フォーム:入力パス= "age"> </form:errors> <br/> path = "email"/> <br/> <form:errors path = "email"> </form:errors> <br/> <入力タイプ= "submit" value = "submit"/> </form> </body> html> </html>
<%@ page Language = "Java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <title>タイトル</head> </head> <body> furification> </head> <body> verification! </body> </html>
validatetest.jspビューのモデルアトリブ= "xxx"後の名前xxxは、対応する@valid @modelattribute( "xxx")の名前xxxと一致する必要があることを指摘することが特に重要です。
<フォーム:エラーパス= "name"> </form:errors>モデルの対応する属性のエラー情報が表示されます。 path = "*"の場合、モデルのすべての属性のエラー情報が表示されます。
テストを実行します:
クリックして直接送信します:
設定が正しく表示されているというエラーメッセージを確認できます。
送信する誤ったデータを入力してください。
まだ正しく表示されているエラーメッセージが表示されます。
正しいデータを入力して送信します。
検証が成功していることがわかります。
以下は、主な検証ノートと指示です。
データ検証コンテンツはここで終了します。コードダウンロード:デモ
詳細については、公式ドキュメントを参照してください:http://docs.jboss.org/hibernate/validator/4.3/reference/en-us/html/validator-usingvalidator.html
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。