java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试
Stripes視圖框架Java對(duì)象屬性驗(yàn)證,它允許對(duì)字段設(shè)置是否必須填寫(xiě),對(duì)數(shù)字大小進(jìn)行限制等。我用prototype.js Ajax 將驗(yàn)證后的數(shù)據(jù)及時(shí)地展示出來(lái),下面來(lái)看程序。
1、編寫(xiě)User實(shí)體類(lèi)
此用戶(hù)共三個(gè)屬性: name、email、age.
package?com.boonya.stripes.entity;
public?class?User?{
private?String?name;
private?String?email;
private?int?age;
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
public?String?getEmail()?{
return?email;
}
public?void?setEmail(String?email)?{
this.email?=?email;
}
public?int?getAge()?{
return?age;
}
public?void?setAge(int?age)?{
this.age?=?age;
}
}
2、編寫(xiě)UserActionBean視圖控制Action類(lèi)
此類(lèi)中包含了用戶(hù)輸入界面(userRegister.jsp)和用戶(hù)數(shù)據(jù)提交完成后的數(shù)據(jù)展示界面(userInfo.jsp),我們要驗(yàn)證的是用戶(hù)的數(shù)據(jù)合法的時(shí)候才展示用戶(hù)數(shù)據(jù)。
package?com.boonya.stripes.actions;
import?com.boonya.stripes.entity.User;
import?net.sourceforge.stripes.action.DefaultHandler;
import?net.sourceforge.stripes.action.ForwardResolution;
import?net.sourceforge.stripes.action.Resolution;
import?net.sourceforge.stripes.action.SessionScope;
import?net.sourceforge.stripes.validation.Validate;
import?net.sourceforge.stripes.validation.ValidateNestedProperties;
@SessionScope
public?class?UserActionBean?extends?AbstractActionBean?{
private?static?final?long?serialVersionUID?=?1L;
protected?static?final?String?REGISTER="/WEB-INF/userRegister.jsp";
protected?static?final?String?USER_INFO="/WEB-INF/userInfo.jsp";
@ValidateNestedProperties({
@Validate(field?="name",required=true,on?=?{"viewUserInfo"}),
@Validate(field?="email",required=true,on?=?{"viewUserInfo"}),
@Validate(field?="age",?required?=?true,?minvalue?=?13,?on?=?{"viewUserInfo"})
})
private?User?user;
@DefaultHandler
public?Resolution?register()?{
return?new?ForwardResolution(REGISTER);
}
public?Resolution?viewUserInfo(){
return?new?ForwardResolution(USER_INFO);
}
public?void?setUser(User?user)?{
this.user?=?user;
}
public?User?getUser()?{
return?user;
}
}
注:@ValidateNestedProperties ?驗(yàn)證對(duì)象包含的特殊屬性字段值的限制;@Validate ?具體驗(yàn)證的字段。filed表示字段、required表示是否必需、on表示綁定到的事件方法。
3、編寫(xiě)界面操作的Jsp文件
userRegister.jsp
pageEncoding="UTF-8"%>
html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">
User-Registerfunction?userHandleAjax()?{
var?myAjax?=?new?Ajax.Updater(‘user‘,
‘‘,
{
method:?‘get‘,
parameters:Form.serialize(‘userForm‘)
});
}
Update?user?info:?
Name:?
Email:?
Age:
userInfo.jsp
pageEncoding="UTF-8"%>
uri="http://stripes.sourceforge.net/stripes.tld"%>
html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">
User-InfoUser‘s?info
Hello?${actionBean.user.name}
Email:?${actionBean.user.email}
age:?${actionBean.user.age}
注:表單字段賦值:對(duì)象.屬性 即user.name等等;而取值以$(actionBean.對(duì)象.屬性),即${actionBean.user.name}等等;
4、測(cè)試表單提交數(shù)據(jù)異常處理
故意少輸入?yún)?shù),頁(yè)面顯示請(qǐng)求不正常頁(yè)面:
產(chǎn)生的異常代碼提示:
Caused?by:?java.util.MissingResourceException:?Could?not?find?an?error?message?with?any?of?the?following?keys:‘com.boonya.stripes.actions.UserActionBean.user.age.valueNotPresent‘,‘com.boonya.stripes.actions.UserActionBean.user.age.errorMessage‘,‘/actions/User.action.user.age.valueNotPresent‘,‘/actions/User.action.user.age.errorMessage‘,‘user.age.valueNotPresent‘,‘user.age.errorMessage‘,‘com.boonya.stripes.actions.UserActionBean.valueNotPresent‘.com.boonya.stripes.actions.UserActionBean.errorMessage‘,?‘/actions/User.action.valueNotPresent‘,?‘/actions/User.action.errorMessage‘,?‘validation.required.valueNotPresent‘.
at?net.sourceforge.stripes.validation.ScopedLocalizableError.getMessageTemplate(ScopedLocalizableError.java:164)
at?net.sourceforge.stripes.action.SimpleMessage.getMessage(SimpleMessage.java:91)
at?net.sourceforge.stripes.validation.SimpleError.getMessage(SimpleError.java:102)
at?net.sourceforge.stripes.tag.ErrorsTag.doEndTag(ErrorsTag.java:349)
at?org.apache.jsp.WEB_002dINF.userRegister_jsp._jspService(userRegister_jsp.java:109)
at?org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at?javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at?org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
...?46more
當(dāng)Stripes驗(yàn)證失敗時(shí),不知道怎樣返回這些錯(cuò)誤信息,解決方案也很簡(jiǎn)單:從 Stripes 包中復(fù)制一份 StripesResources.properties 到項(xiàng)目的源代碼跟目錄下(與WEB/classess同級(jí))即可。加入StripesResources.properties文件后輸入:name=boonya,[email?protected],age=12.;測(cè)試效果如下圖所示:
此時(shí),年齡驗(yàn)證錯(cuò)誤;但是Stripes的錯(cuò)誤消息已經(jīng)知道該怎么提示錯(cuò)誤信息給用戶(hù)了。
5、測(cè)試正確的驗(yàn)證和Ajax效果
在表單輸入框中輸入符合驗(yàn)證條件的數(shù)據(jù)如:name=boonya,[email?protected],age=23.;效果如下圖所示:
至此,整個(gè)示例程序測(cè)試完畢。
原文:http://sunl2014.blog.51cto.com/8889033/1532416
總結(jié)
以上是生活随笔為你收集整理的java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dns服务器系统架构,详解 DNS 与
- 下一篇: 感知机实现与、或、与非门和异或门