Struts2学习——0600简单数据校验
2016-10-05 22:14
513 查看
背景
在我们的实际应用中,数据校验是一个非常常见的东西。例如,在用户注册系统中,肯定是要先表单校验的,然后一般来说,校验失败的东西,放在表单后面。Struts2实际上可以利用Action中的方法,把错误的东西先addErrorField里,然后在jsp中利用struts2的标签再拿出来。简单数据校验
其实正常工程中的数据校验要更难,但是,都是从简单的一点点过渡来的。这次把文档的顺序改一下,我们先看看效果。1. 效果
index.jsperror.jsp
可以从地址栏看到, *namespace=/user *action name=user *param name=name *param value=a 校验失败,得到的信息 *name is error *name is too long *还有个debug链接
点开debug之后
里面包含了一个Value Stack Contents和一个Stack Context来保存相关信息
2. 分析
struts.xml<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="user" extends="struts-default" namespace="/user"> <action name="user" class="com.bjsxt.struts2.user.action.UserAction"> <!-- 通过校验之后肯定有两个result的,通过的返回success,不通过的返回error --> <result>/user_add_success.jsp</result> <result name="error">/user_add_error.jsp</result> </action> </package> </struts>
UserAction
package com.bjsxt.struts2.user.action; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { //可以看到用的是Action接收参数方式 private String name; public String add() { //进行简单的数据校验,如果传入的参数是空,或者不是admin就是校验失败 if(name == null || !name.equals("admin")) { /* 将两条错误信息,加入到Struts的相关空间里面,其实这个空间,就是我们刚刚看到的value stack, 里面有一个FieldError,这个空间是个map,前面是key,就是这里的name,后面是value, value是一个数组可以存多条错误信息,这里就存了两条。 */ this.addFieldError("name", "name is error"); this.addFieldError("name", "name is too long"); return ERROR; } return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
index.jsp
<?xml version="1.0" encoding="GB18030" ?> <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> <base href="<%=basePath %>"/> <title>Insert title here</title> </head> <body> 使用addFieldError方法和s:fieldError标签简单处理数据校验 <a href="user/user!add?name=a" >添加用户</a> </body> </html>
user_add_error.jsp
<?xml version="1.0" encoding="GB18030" ?> <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!-- 引入struts2的标签 --> <%@taglib uri="/struts-tags" prefix="s" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> <title>Insert title here</title> </head> <body> <!-- 这是一句话,说用户添加错误 --> User Add Error! <!-- 这个是从FieldError中拿到key=name的那个数组,然后这个<s:fielderror>标签会帮你包装, 变成两条无序的数据。这个其实不是我们想要的,因为它没事儿还包装了,我们就想到一条字符串, 然后我们可以自己用css对这字符串进行修饰 --> <s:fielderror fieldName="name" theme="simple"/> <br /> <!-- <s:property>这个标签就完成了我们这个愿望,value也可以=fielderrors.name[0] 意义是从value stack中的errors域中,拿到key=name的value数组中的第一条数据,在本实例中, [0]也可以换成[1],以为name有两条数据 --> <s:property value="errors.name[0]"/> <!-- 这个就是得到我们那个debug的超链接,点击之后, 保存在value stack和stack context中的所有内容信息,都能看到 --> <s:debug></s:debug> </body> </html>
分析到此结束
若有不足之处,请不吝赐教
相关文章推荐
- Struts2学习---简单的数据校验、访问Web元素
- Struts2学习---简单的数据校验、访问Web元素
- Struts2简单数据校验
- struts2简单数据校验
- Struts2学习(第五篇)——action基础知识和数据校验
- Struts2(五) 校验简单数据类型方法 和 值栈的说明
- Struts2学习总结 ---- 数据校验
- Struts2--简单数据校验
- Struts2--简单的数据校验
- Struts2的简单数据校验
- 【转载】Struts2学习总结 ---- 数据校验
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- Struts2学习第二天——获取参数与数据校验
- Struts2学习(八)数据校验实现
- struts2学习 : 数据校验
- struts2学习笔记--使用Validator校验数据
- Struts2的简单数据校验
- struts2简单的数据校验
- Struts2学习总结(3)--值栈,Ognl表达式,Struts标签库,国际化,数据校验,拦截器
- Struts2慢慢学之六----简单的数据校验