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-Register

function 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-Info

User‘s info

Hello ${actionBean.user.name}

Email: ${actionBean.user.email}

age: ${actionBean.user.age}

注:表单字段赋值:对象.属性 即user.name等等;而取值以$(actionBean.对象.属性),即${actionBean.user.name}等等;

4、测试表单提交数据异常处理

故意少输入参数,页面显示请求不正常页面:

572e5523e019022afec1cea24196d076.png

产生的异常代码提示:

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.;测试效果如下图所示:

454e37209c686a53f6d4bfbddfd5dbd2.png

此时,年龄验证错误;但是Stripes的错误消息已经知道该怎么提示错误信息给用户了。

5、测试正确的验证和Ajax效果

在表单输入框中输入符合验证条件的数据如:name=boonya,[email protected],age=23.;效果如下图所示:

3459879f167cf26223884494c8e64a58.png

至此,整个示例程序测试完毕。

原文:http://sunl2014.blog.51cto.com/8889033/1532416

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中unicode显示乱码_Java 已知Java系统编码是GBK,jtextarea从一编码为Unicode的文本中读取数据,出现乱码,怎么正常显示?...

Java 已知Java系统编码是GBK,jtextarea从一编码为Unicode的文本中读取数据,出现乱码,怎么正常显示?关注:159 答案:2 mip版解决时间 2021-02-03 12:45提问者鉨瞞着所囿亾,爱着誰2021-02-02 16:35我觉得jtextarea中读取…

java中按钮的接口_Java接口基础

接口(interface)1.接口体中包含常量的声明(没有变量)和抽象方法两部分。接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量访问权限一定是public,而且是static常量(允许省略public、final和static修饰符),所有的抽象方…

python之if经典语句_Python之if语句、字典

if语句1>利用if语句判断用户是否被禁言banned_users.pybanned_users[Lily,jonh,Susan]userLilyif user not in baned_users:print(user.title()",you can post a response if you wish.")######2>if else 语句age17if age>18:print("You are old enoug…

java 线程加载类_java JVM-线程上下类加载器

public class One {public static void main(String[] args) throws Exception {ClassLoader loaderOne.class.getClassLoader();System.out.println(loader);//获得当前线程的上下文加载器,未改变前和第一种是一样的ClassLoader loader2Thread.currentThread().get…

catalog move.php,catalog.php

/*** WK 列出所有分类及品牌* * * 版权所有 2005-2012 QQ 80342014,并保留所有权利。* ;* ----------------------------------------------------------------------------* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进…

php get 数据类型,PHP基础-数据类型-integet

integer 是集合 ℤ {…, -2, -1, 0, 1, 2, …} 中的某个数。语法整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 )。 可以用 负运算符 来表示一个负的integer。二进制表达的 integer 自 PHP 5.4.0 起可用…

php怎么seo,怎样学习seo

学习seo的方法:1、从搜索引擎原理开始,学习seo要先从搜索引擎原理开始;2、多思考;3、学习seo要多看高质量的seo教程;4、多和seo高手交流,经常听听大神的seo理论,集百家之所长,这样会…

php callable 参数,php 利用反射执行callable

现在有一个这样的函数我想利用反射,再用call_user_func执行,当然,我不是白痴和多此一举,主要是因为上面的$func是一个数组中的值,我现在要写一个解析数据函数,会遇到$func,写法如下:…

php ip 短时间 重复,php 限制同一个IP 一段时间不能评论多次,能给我详细解决的...

php 限制同一个IP 一段时间不能评论多次,能给我详细解决的mip版 关注:163 答案:3 悬赏:30解决时间 2021-01-25 15:27已解决2021-01-25 05:54php 限制同一个IP 一段时间不能评论多次,能给我详细解决的最佳答案2021-01-25 06:49在评论的操作中,都需要记录用户ip地址…

java 8 list,JAVA8 ListListInteger list中再装一个list转成一个list操作

我就废话不多说了&#xff0c;大家还是直接看代码吧~List collect IntStream.range(1, 10).boxed().collect(Collectors.toList());List collect1 IntStream.range(10, 20).boxed().collect(Collectors.toList());List> lists new ArrayList<>();lists.add(collect…

matlab中创建一个工程,从文件夹创建新工程

从文件夹创建新工程如果您有许多文件并希望将它们整理为一个工程(无论是否进行源代码管理)&#xff0c;请按照以下步骤创建一个新工程。使用 Simulink Start Page 中的 Folder to Project 模板可轻松将一个文件夹转换为工程。该模板会自动将您的文件添加到工程中&#xff0c;并…

局部遮荫光伏matlab,一种基于随机蛙跳全局搜索算法的局部阴影光伏阵列MPPT控制的制作方法...

本发明涉及一种局部阴影光伏阵列多峰MPPT控制方法&#xff0c;特别涉及一种基于随机蛙跳全局搜索算法的局部阴影光伏列阵多峰MPPT控制。背景技术&#xff1a;伴随太阳能发电的普及&#xff0c;光伏阵列的运行环境变的越来越复杂&#xff0c;局部遮荫导致光伏阵列输出特性曲线出…

打靶法matlab求边值问题代码,数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)...

实验二十七实验报告一、实验名称&#xff1a;微分方程组边值问题数值算法(打靶法&#xff0c;有限差分法)。二、实验目的&#xff1a;进一步熟悉微分方程组边值问题数值算法(打靶法&#xff0c;有限差分法)。三、实验要求&#xff1a;运用Matlab/C/C/Java/Maple/Mathematica 等…

php symfony 安装,Symfony4中文文档: 安装和设置Symfony框架

安装和设置Symfony框架要创建新的Symfony应用程序, 首先确保使用的是PHP7.1 或更高版本并且已经安装Componser. 如果未安装, 请首先在系统上全局安装Componser. 如果你想使用虚拟机(VM), 请查看Homestead通过运行以下命令来创建新项目:$ composer create-project symfony/websi…

matlab变参传函,什么是传递函数的增益

公告&#xff1a; 为响应国家净网行动&#xff0c;部分内容已经删除&#xff0c;感谢读者理解。话题&#xff1a;什么是传递函数的增益?它是干什么的?怎么求?回答&#xff1a;我认为楼上的是错误的G(S)Y(s)/R(s) K(as1)(bs1)(ms1)/((ns1)(ps1).(qs1) )这样的K才是控制论里面…

matlab单元数组和结构,Matlab使用单元数组和结构数组

Matlab使用字符串数组、单元数组(cell array)和结构数组 (struct array)要在MALTAB中实现比较复杂的编程&#xff0c;就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。MATLAB字符串数组的创建与运算字符串数组主要用于可视化编…

matlab sar 斑马图,星载合成孔径雷达(SAR)斑马图仿真与研究

收稿日期:2002 - 04 - 22   第 20 卷  第 5 期 计  算  机  仿  真 2003 年 5 月    文章编号:1006 - 9348(2003)05 - 0123 - 04 星载合成孔径雷达( SAR)斑马图仿真与研究 朱力1 ,于立2 (1. 南京理工大学 ,江苏南京 210094 ;2. 南京电子技术研究所 ,江苏 南京 210013)…

matlab等高线二维加数字,matlab绘制二维等高线

第5章 MATLAB绘图 5.1 二维数据曲线图 5.2 其他二维图形 5.3 隐函数绘图 5.4 三维图形 5.5 图形修饰处理 5.6 图像处理与动画制作 5.1 二维数据曲线图 5......绘图 一.实验目的掌握 matlab 二维图形和三维图形的绘制方法,并会对图形进行处理,掌握符号函数(显 函数、隐函数和参数…

php订阅与推送,PHP用户关键词订阅推送文章功能

具体要求&#xff1a;PHP用户关键词订阅推送文章功能采用语言原生PHP5.6数据库mysql需求会员才能设置关键词推送比如用户设置了关键词比如‘电脑采购’和设置了匹配标题&#xff0c;如果有文章标题包含这个关键词&#xff0c;那就推送文章{文章id}比如用户设置了关键词比如‘电…

php的array_walk,PHP array_walk() 函数详解

定义array_walk - 对数组的每个元素应用自定义函数描述array_walk ( array &$array , callable $callback [, mixed $userdata NULL ] ) : bool回调函数的参数&#xff0c;第一个是元素值&#xff0c;第二个是元素键名&#xff0c;第三个是可选的 $userdata。如果只想改变…