java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试
Stripes視圖框架Java對象屬性驗證,它允許對字段設置是否必須填寫,對數字大小進行限制等。我用prototype.js Ajax 將驗證后的數據及時地展示出來,下面來看程序。
1、編寫User實體類
此用戶共三個屬性: 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、編寫UserActionBean視圖控制Action類
此類中包含了用戶輸入界面(userRegister.jsp)和用戶數據提交完成后的數據展示界面(userInfo.jsp),我們要驗證的是用戶的數據合法的時候才展示用戶數據。
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 ?驗證對象包含的特殊屬性字段值的限制;@Validate ?具體驗證的字段。filed表示字段、required表示是否必需、on表示綁定到的事件方法。
3、編寫界面操作的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}
注:表單字段賦值:對象.屬性 即user.name等等;而取值以$(actionBean.對象.屬性),即${actionBean.user.name}等等;
4、測試表單提交數據異常處理
故意少輸入參數,頁面顯示請求不正常頁面:
產生的異常代碼提示:
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
當Stripes驗證失敗時,不知道怎樣返回這些錯誤信息,解決方案也很簡單:從 Stripes 包中復制一份 StripesResources.properties 到項目的源代碼跟目錄下(與WEB/classess同級)即可。加入StripesResources.properties文件后輸入:name=boonya,[email?protected],age=12.;測試效果如下圖所示:
此時,年齡驗證錯誤;但是Stripes的錯誤消息已經知道該怎么提示錯誤信息給用戶了。
5、測試正確的驗證和Ajax效果
在表單輸入框中輸入符合驗證條件的數據如:name=boonya,[email?protected],age=23.;效果如下圖所示:
至此,整個示例程序測試完畢。
原文:http://sunl2014.blog.51cto.com/8889033/1532416
總結
以上是生活随笔為你收集整理的java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dns服务器系统架构,详解 DNS 与
- 下一篇: Java一些基础知识的整合