Play Framework 框架 验证范本模板Word文档格式.docx

上传人:b****6 文档编号:16242356 上传时间:2022-11-21 格式:DOCX 页数:11 大小:19.20KB
下载 相关 举报
Play Framework 框架 验证范本模板Word文档格式.docx_第1页
第1页 / 共11页
Play Framework 框架 验证范本模板Word文档格式.docx_第2页
第2页 / 共11页
Play Framework 框架 验证范本模板Word文档格式.docx_第3页
第3页 / 共11页
Play Framework 框架 验证范本模板Word文档格式.docx_第4页
第4页 / 共11页
Play Framework 框架 验证范本模板Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Play Framework 框架 验证范本模板Word文档格式.docx

《Play Framework 框架 验证范本模板Word文档格式.docx》由会员分享,可在线阅读,更多相关《Play Framework 框架 验证范本模板Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

Play Framework 框架 验证范本模板Word文档格式.docx

stextualdescription。

Themessagecanbeaplainmessageorrefertoakeyfromamessagebundle(typicallyforinternationalizationsupport)。

下面我们看一下怎样去验证一个简单的HTTP参数。

Let’sseehowtovalidateasimpleHTTPparameter:

publicstaticvoidhello(Stringname){

 

validation。

required(name);

...

这段代码检查name变量被正确的设置了,如果不是的话,相应的信息会被增加到当前的错误集合中去。

Thiscodechecksthatthenamevariableiscorrectlyset.Ifnot,thecorrespondingerrorisaddedtothecurrenterrorscollection。

你可以重复这个操作去验证每一个你需要的变量。

Youcanrepeatthisoperationforeachvalidationyouneed:

publicstaticvoidhello(Stringname,Integerage){

required(age);

min(age,0);

.。

}

重新得到错误信息

Retrievingerrormessages

在每一个验证结束,你可以检查是否错误都被创建并显示出来了.

Attheendofthevalidationyoucancheckifanyerrorshavebeencreatedanddisplaythem:

publicstaticvoidhello(Stringname,Integerage){

required(name);

min(age,0);

if(validation.hasErrors()){

for(Errorerror:

validation.errors()){

System。

out。

println(error.message());

}

假设name和age是null,那么将会显示出:

Assumingthatnameandagearenull,thiswoulddisplay:

nameisrequired

ageisrequired

默认的消息是key和message集合中key一致的,所以在conf/messages文件中你可以看到:

Defaultmessagesarekeysthatrefertothemessagebundle。

Sointhe**conf/messages**fileyouwillhave:

validation.required=%sisrequired

你可以改变这些默认的消息,然后再每一个项目中覆盖它,%s占位符会被错误的key所替代,你可以使用error.message(Stringfield)方法覆盖它。

Youcanchangethisdefaultmessageandoverrideitforeachapplicationlanguage.The**%s**placeholderwillbereplacedbytheerrorkey。

Youcanoverrideusingthe**error。

message(Stringfield)**method.

例如:

Forexample:

Errorerror=validation.required(name)。

error;

if(error!

=null){

System.out.println(error。

message("

Thename”));

你还可以为每一次检查明确指定不同的信息.

Youcanalsospecifyadifferentmessageforeachcheck:

message(”Fillthename!

"

).error;

=null){

System.out。

println(error。

message());

再模板中显示错误信息

Displayingerrorsinthetemplate

再大多数情况下,你想让错误消息显示在视图模板中,你可以在模板中使用errors对象使用它们,一些tag帮助你显示这些错误。

Inmostcasesyouwanttodisplaytheerrormessagesintheviewtemplate。

Youcanaccesstheminthetemplateusingthe**errors**object.Sometagshelpyoutodisplaytheerrors:

让我们看个例子。

Let’sseeasample:

publicstaticvoidhello(Stringname,Integerage){

validation.required(age);

render(name,age);

现在是模板.

andnowthetemplate:

#{ifErrors}

<

h1>

Oops.。

<

/h1>

#{errors}

li>

${error}〈/li〉

#{/errors}

#{/ifErrors}

#{else}

Hello${name},youare${age}。

#{/else}

但是在实际的应用中,你想显示原先的form表单.所以你将有2个action,显示form表单,还要处理POST.

Butinarealapplicationyouwanttoredisplaytheoriginalform.Soyouwillhavetwoactions:

onetodisplaytheformandanotheronetohandlethePOST. 

当然如果有错误发生的话你需要重新跳转到第一个action,但是验证会发生在第二个action中,这样你需要一些小技巧在跳转之前保持错误信息。

使用validate。

keey()方法,它可以为下个action保存错误集合。

Ofcoursethevalidationwilloccurinthesecondactionandifsomeerroroccursyouwillhavetoredirecttothefirstaction。

Inthiscaseyouneedaspecialtricktokeepyourerrorsduringtheredirect.Usethe**validation.keep()**method。

Thiswillsavetheerrorscollectionforthenextaction.

让我们看一个真实的例子。

Let'

sseearealsample:

publicclassApplicationextendsController{

publicstaticvoidindex(){

render();

publicstaticvoidhello(Stringname,Integerage){

validation.required(name);

validation.min(age,0);

if(validation。

hasErrors()){

params。

flash();

//addhttpparameterstotheflashscope

validation.keep();

//keeptheerrorsforthenextrequest

index();

render(name,age);

Andthe**view/Application/index.html**template:

#{ifErrors}

〈h1>

Oops。

..<

#{errors}

${error}〈/li〉

#{/ifErrors}

#{form@Application。

hello()}

div〉

Name:

〈inputtype="

text”name=”name”value=”${flash。

name}"

/〉

〈/div〉

div>

Age:

inputtype="

text”name="

age"

value=”${flash。

age}"

/〉 

/div>

〈div〉

〈inputtype="

submit"

value="

Sayhello"

〈/div>

#{/form}

Youcancreateabetteruserexperiencebydisplayingeacherrormessagenexttothefieldthatgeneratedtheerror:

#{ifErrors}

/h1〉

#{/ifErrors}

#{form@Application.hello()}

inputtype=”text"

name="

name"

${flash.name}"

spanclass=”error"

>

#{error’name’/}〈/span>

inputtype=”text”name=”age”value=”${flash。

age}"

spanclass=”error”>

#{error’age’/}〈/span>

value=”Sayhello"

#{/form}

使用注解

Usingannotations

你可以使用注解做相同的事。

Youcanuseannotationstodothesamething:

publicstaticvoidhello(@RequiredStringname,@Required@Min(0)Integerage){

if(validation。

params.flash();

validation.keep();

index();

render(name,age);

验证对象

Validatingobjects

使用注解你可以轻松的为你的model对象增加约束,让我们重写前一个例子,使用User类。

Usingannotationsyoucaneasilyaddconstraintstoyourmodelobjects。

Let’srewritethepreviousexampleusingaUserclass。

Firstthe**User**class:

packagemodels;

publicclassUser{

@Required

publicStringname;

@Required

@Min(0)

publicIntegerage;

然后修改helloaction。

Thenthemodified**hello**action:

publicstaticvoidhello(@ValidUseruser){

params。

flash();

keep();

最后增加一个修改后的form表单

Andfinallythemodifiedform:

#{ifErrors}

h1〉Oops...<

#{/ifErrors}

#{form@Application。

〈div>

Name:

〈inputtype=”text”name=”user.name"

${flash[’user。

name'

]}"

〈spanclass=”error"

〉#{error’user.name’/}<

/span〉

text"

user。

age”value="

${flash['

age’]}"

〈spanclass="

error"

#{error’user。

age'

/}〈/span〉

inputtype=”submit”value="

#{/form}

自定义验证

Customvalidation

如果在play。

validation没有发现你需要的验证,你可以自己写。

然后使用@CheckWith注解绑定到你自己的Check实现里去。

Can'

tfindthevalidatoryouneedinthe**play。

validation**package?

Writeyourown.Youcanusethegeneric**@CheckWith**annotationtobindyourown**Check**implementation.

例如

Forexample:

@CheckWith(MyPasswordCheck.class)

publicStringpassword;

staticclassMyPasswordCheckextendsCheck{

publicabstractbooleanisSatisfied(Objectuser,Objectpassword){

returnnotMatchPreviousPasswords(password);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1