通过实例跟我学Struts2从入门到精通——如何应用Struts2客户端JavaScript实现对Web表单进行验证的应用实例
更新时间:2023-08-29 23:59:01 阅读量: 教育文库 文档下载
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
1.1通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
1.1.1应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
1、将页面中的表单改变为Struts2中的表单标签实现——不支持标准的HTML表单
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:property value="%{getText('strutsweb.title')}"/></title>
<!-- 此标志的作用是引入Struts 2.0的常用的Javascript和CSS -->
<s:head />
</head>
<body>
<s:form action="i18nUserInfoManageActionModel!doUserLogin.action" method="post"
theme="xhtml" validate="true">
<s:textfield name="userName" label="%{getText('http://www.77cn.com.cnername')}" theme="xhtml"/>
<s:password name="userPassWord" label="%{getText('http://www.77cn.com.cnerpassword')}" theme="xhtml"/>
<s:submit value="%{getText('strutsweb.login.submitbutton')}" theme="xhtml"/>
</s:form>
</body>
</html>
注意:此时需要应用Struts2中的表单标签、标签<Form>标签中需要添加validate属性(并且要设置为true,其中的validate="true"表示支持客户端的校验),另外也不要将theme属性指定为simple(simple表示struts2将把这个解析成普通的HTML标签)。
2、再执行http://127.0.0.1:8080/sshwebcrm/userManage/userLoginI18n.jsp
杨教授工作室,版权所有,盗版必究,1/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 2/13页 产生出下面的错误
主要是下面的I18nUserInfoManageActionModel -validation.xml 文件中的错误信息的国际化产生冲突。在页面中无法按照key 加载对应的国际化的信息——但在Struts2.1.8版中没有再出现这样的错误。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0//EN"
"http://www.77cn.com.cn/xwork/xwork-validator-1.0.2.dtd" > <validators>
<field name ="userName">
<field-validator type ="requiredstring">
<message key="http://www.77cn.com.cnerName.required " />
</field-validator>
</field>
<field name ="userPassWord">
<field-validator type ="requiredstring">
<message key="http://www.77cn.com.cnerPassWord.required " />
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,10})]]></param>
<message key="http://www.77cn.com.cnerPassWord.length " /> </field-validator>
</field>
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 3/13页 </validators>
网上也有此错误的帖
3、解决的方法
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0//EN"
"http://www.77cn.com.cn/xwork/xwork-validator-1.0.2.dtd" > <validators>
<field name ="userName">
<field-validator type ="requiredstring">
<message>userName 必须输入 !</message>
</field-validator>
</field>
<field name ="userPassWord">
<field-validator type ="requiredstring">
<message>userPassWord 必须输入 !</message>
</field-validator>
<field-validator type="regex">
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
<param name="expression"><![CDATA[(\w{4,10})]]></param>
<message>密码长度必须多于4位</message>
</field-validator>
</field>
</validators>
或者使用<message>${getText("http://www.77cn.com.cnerPassWord.length")}</message>方式获取国际化资源。
4、再执行此页面
同样也没有进行提交。同时,观察URL地址栏中仍然为页面位置,因此没有向后台服务器产生提交行为。
5、查看所产生出的JavaScript代码
(1)查看在userLoginI18n.jsp中所产生的Struts 2.0的常用的Javascript和CSS
杨教授工作室,版权所有,盗版必究,4/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
出现下面的内容
可以看到部署后的JSP页面中自动生成了我们在校验配置文件中对应的javascript代码。Struts2中并不是所有的服务器端校验都可以转换成客户端校验。客户端校验仅仅支持如下几种校验器:
6、客户端校验仅仅支持如下几种校验器
required validator(必填校验器)
requiredstring validator(必填字符串校验器)
stringlength validator(字符串长度校验器)
regex validator(表达式校验器)
email validator(邮件校验器)
url validator(网址校验器)
int validator(整数校验器)
double validator(双精度数校验器)
7、如果在浏览器端屏蔽JavaScript脚本
杨教授工作室,版权所有,盗版必究,5/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
再执行,此时客户端的JavaScript将不再起作用,但服务器端的验证程序仍然有效。比如,在下面的URL地址为服务器端的URL地址。
1.1.2为不同逻辑名的Action类中的业务方法提供不同校验要求
(为同一个Action类中的不同的业务方法提供不同的校验要求)
1、理解以如下形式的文件名称是针对Action类的所有的方法的检查——I18nUserInfoManageActionModel-validation.xml
在Action类中除掉execute()方法或者改变为doUserLogin()方法
杨教授工作室,版权所有,盗版必究,6/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 7/13页
将出现下面的结果,表明I18nUserInfoManageActionModel -validation.xml 仍然起作用
由于同一个验证的XML 文件不可能对不同的表单实施不同的检查,为此需要提供多个不同的验证配置的XML 文件。
2、在I18nUserInfoManageActionModel 类中提供自定义的业务控制调度方法
doUserLogin
也可以增加doUserRegister 方法
public String doUserRegister(){ //在该方法中进行用户注册的功能实现
boolean returnResult=getUserName().equals("yang1234") &&getUserPassWord().equals("12345678");
if(returnResult){
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
oneUserInfo=new UserInfoActionForm();
oneUserInfo.setUserName(userName);
oneUserInfo.setUserPassWord(userPassWord);
HttpSession session=ServletActionContext.getRequest().getSession();
session.setAttribute("oneUserInfo", oneUserInfo);
resultMessage =getUserName()+" "+ this.getText("strutsweb.login.success");
}
else{
resultMessage =getUserName()+" "+ this.getText("strutsweb.login.failure");
}
return this.SUCCESS;
}
3、在struts.xml(struts-otherFunction.xml)中为I18nUserInfoManageActionModel类中的doUserLogin方法提供一个新的名称
<action name="validateI18nUserInfoManageActionModel" method="doUserLogin"
class="com.px1987.sshwebcrm.action.I18nUserInfoManageActionModel">
<result name ="input">/userManage/userLoginI18n.jsp</result>
</action>
3、为上面的validateI18nUserInfoManageActionModel提供对应的校验文件
(1)I18nUserInfoManageActionModel-validateI18nUserInfoManageActionModel-validation.xml 格式为:Action类名称-Action别名-validation.xml
杨教授工作室,版权所有,盗版必究,8/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
内容与前面的I18nUserInfoManageActionModel-validation.xml文件相同。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0//EN"
"http://www.77cn.com.cn/xwork/xwork-validator-1.0.2.dtd" > <validators>
<field name ="userName">
<field-validator type ="requiredstring">
<param name="trim">true</param>
<message key="http://www.77cn.com.cnerName.required" />
</field-validator>
</field>
<field name ="userPassWord">
<field-validator type ="requiredstring">
<param name="trim">true</param>
<message key="http://www.77cn.com.cnerPassWord.required" />
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,10})]]></param>
<message key="http://www.77cn.com.cnerPassWord.length" />
杨教授工作室,版权所有,盗版必究,9/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
</field-validator>
</field>
</validators>
4、再添加一个新的JSP页面validateUserLogin.jsp
设计该页面的内容
<%@ page contentType="text/html; charset=GB2312" isELIgnored="false" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head> <title>
<s:text name="strutsweb.title">
<s:param>(蓝梦CRM系统)</s:param>
</s:text>
</title></head>
<body>
<form
action="${pageContext.request.contextPath}/validateI18nUserInfoManageActionModel.action " method="post" >
<s:text name="http://www.77cn.com.cnername"/>
<input type="text" name="userName" /> <br />
<s:text name="http://www.77cn.com.cnerpassword"/>
<input type="password" name="userPassWord" /> <br />
<input type="submit" value='<s:text name="strutsweb.login.submitbutton"/>'
name="submitButton" />
<input type="reset" value='<s:text name="strutsweb.login.resetbutton"/>' />
杨教授工作室,版权所有,盗版必究,10/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 11/13页 </form>
</body>
</html>
5、部署本应用并测试两个不同的方法
(1)
http://127.0.0.1:8080/sshwebcrm/userManage/validateUserLogin.jsp
注意:应该要将前面的缺省的XML 文件(I18nUserInfoManageActionModel -validation.xml )除掉,否则会出现上面的重复验证!
(2)将出现下面的错误
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
1.1.3为指定的方法配置特殊的校验规则
1、应用的技术背景
当一个Action中有多个业务方法时,我们可能需要对其中的某个方法配置单独的校验规则,比如注册时的要求用户两次输入的密码必须相同等,这时我们可以配置一个单独的校验文件,命名规则为:<actionName>-<methodName>-validation.xml,可以看到这里多了一个方法名,这个方法名就是要校验的业务逻辑在struts.xml配置文件中配置的name,这个文件也要同Action放在同一个目录下。
validateI18nUserInfoManageActionModel-doUserLogin-validation.xml
2、相关的配置项目的代码示例
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0//EN"
"http://www.77cn.com.cn/xwork/xwork-validator-1.0.2.dtd" >
<validators>
<field name="userName">
<field-validator type="requiredstring">
杨教授工作室,版权所有,盗版必究,12/13页
通过代码实例跟我学Struts2框架从入门到精通——如何应用Struts2框架客户端JavaScript实现对Web表单进行验证的应用实例
杨教授工作室精心创作的优秀程序员职业提升必读系列资料<param name="trim">true</param>
<message key="http://www.77cn.com.cnerName.required" /> </field-validator>
</field>
<field name="userPassWord">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="http://www.77cn.com.cnerPassWord.required" /> </field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,10})]]></param>
<message key="http://www.77cn.com.cnerPassWord.length" />
</field-validator>
</field>
</validators>
杨教授工作室,版权所有,盗版必究,13/13页
正在阅读:
通过实例跟我学Struts2从入门到精通——如何应用Struts2客户端JavaScript实现对Web表单进行验证的应用实例08-29
幼儿园元旦晨会主持词12-15
举报调查报告04-23
小学美术人美版 四年级上册 第2课《生活中的暖色》优质课公开课04-15
我发现了小鱼的秘密作文400字07-01
新教师培训心得体会06-06
一个基于模拟退火法的陆面数据同化算法09-01
商贸流通业现代化项目申报指南12-24
《绿色蝈蝈》赵海容04-28
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实例
- Struts2
- 应用
- 跟我学
- 表单
- 精通
- JavaScript
- 客户端
- 入门
- 验证
- 通过
- 实现
- 进行
- 如何
- Web