Struts2中对数据简单的验证和property标签的用法

使用addFieldError方法和s:fieldError标签简单处理数据校验

场景:对一个用户名进行验证,如果用户名不合法,则显示给客户端查看信息。

URL请求地址:

http://localhost:8080/Struts2_SimpleDataValiation/user/user!add?name=a

访问的Struts2配置,namespace="/user",action的name="user",Action所执行的方法method="add"并且传入了一个参数name=a

配置文件如下:

<?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.chongqing.action.UserAction">
            <result>/user_add_success.jsp</result>
            <result name="error">/user_add_error.jsp</result>
        </action>
    </package>
</struts>

根据配置文件可以得知action所对应的类为com.chognqing.action.UserAction,并且具有两个结果集(success和error).代码如下:

package com.chongqing.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	private String name;

	public String add() {
		if(name == null || !name.equals("admin")) {
			//验证错误,返回错误信息,addFieldError中同一个name可以添加两个不同的字符串
			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;
	}
}

根据Action类代码,可以看到Action是利用Action的成员属性(name)来接受参数值,并且使用this.addFieldError()方法添加错误信息,以便前台可以访问到。

this.addFieldError(name, errorMessage);

注:此方法是使用继承了ActionSupport父类的
     name:可以是类的属性名称,但一般建议使用哪个成员属性出错,就用哪个
     errorMessage:添加的信息

在客户端获取这些信息,如下:

<body>
	User Add Error!
	<s:fielderror fieldName="name" theme="simple"/>
	<br />
	<s:property value="errors.name[0]"/>
	<s:debug></s:debug>
</body>

注:使用<s:fielderror>标签,需要使用<%@taglib%>命令引用Struts2的标签库如下:

<%@taglib uri="/struts-tags" prefix="s" %>

1、<s:fielderror>标签:获取使用addFieldError()方法添加的信息。

FiledName:指定信息的名称。
Theme: 指定显示的主题。
注:使用此标签获取的错误信息,Struts强制添加了css的修饰。生成的HTML代码如下(不常用):

<!--Class="errorMessage"是Struts2已经设置好的一个css了,这个方式不方便我们自定义样式-->
<ul class="errorMessage">
	<li><span>name is error</span></li>
	<li><span>name is too long</span></li>
</ul>

2、<s:debug></s:debug>:这是标签的写方式,会在页面上产生一个链接,点击后显示如下(Struts2生成的一些信息):

3、<s:property>标签:获取值堆栈属性所对应的值。

<s:property value="errors.name"/>

注:value:指定值堆栈的属性名及数据下标等。

例如:value="a":获取Action类的成员属性a的值
         value="errors":获取errors属性的对象Map值
         value="errors.name":获取errors属性的对象Map的key为name的value
         value="errors.name[0]" :获取errors属性的对象Map的key为name的value的第一个元素的值。
注:如果获取Action Context中的Key值,需要在前面加#(井号)

比如:

<s:property value="#request"/>
时间: 2024-10-26 14:31:28

Struts2中对数据简单的验证和property标签的用法的相关文章

struts2中服务器端数据校验

数据校验指对数据合法性进行检查,根据验证数据的位置可以分为客户端验证和服务器端验证,今天随笔主要写的是实现服务器端的数据验证,服务器端数据验证主要特点: ·数据提交后在服务器端验证 ·防止绕过客户端验证提交的非法数据 ·可以在服务器端处理数据前保证数据的合法性 Struts2中有两种实现服务器端验证的方式. 一.       使用ActionSupport编码实现验证 在Action类的方法中直接验证 在Action 类中直接进行校验是一种最为原始的方法,这里作为了解,首先是action 类中的

struts2 中的数据访问servletAPI

ActionContext包含其他数据对象,包括值栈 通过ActionContext访问数据 1.获得session域对象 2.获得application 原文地址:https://www.cnblogs.com/hellowq/p/10240349.html

Struts2中ValueStack结构和总结

[ValueStack和ActionContext的关系] 首先,从结构上来看ValueStack是ActionContext的一个组成部分,是对ActionContext功能的扩展.ActionContext是一个容器结构,是Struts2中用于数据存储的的场所,而ValueStack则是一个具备表达式引擎能力的数据结构,提供了一个可以进行表达式引擎的计算场所.Struts2将ValueStack置于ActionContext目的是为静态的数据添加动态的计算能力.以下也是ValueStack和

struts2(三)---struts2中的服务端数据验证框架validate

struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个action中进行数据验证时,可以重写这个方法.数据验证往往是在客户端向服务端提交表单信息时进行的,比如execute方法负责处理表单信息并返回相应的结果,在此之前,validate会先对提交的表单信息进行验证: ->验证通过:会执行execute的相应操作. ->验证失败: –>定义了失败后的re

Struts2中数据验证的使用-----validation文件命名

1. struts2验证规则validation配置文件命名方式总结 1.Action级别校验命名格式: ActionClassName-validation.xml 2.Action中某个方法的校验命名格式: ActionClassName-ActionAliasName-validation.xml 注意:这里的ActionAliasName(action别名)指的是struts.xml中Action name="XX"的xx的名称,而不是method="XX"

在struts2框架中实现手动处理输入验证

在struts2框架中实现手动处理输入验证,只需要在Action中对父类ActionSupport的validate方法重写即可.就是讲输入验证逻辑写在validate方法中.下面看项目中的Action类checkUser.java package action; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.opensymphony.xwork2.ActionSupport; public

在kettle中实现数据验证和检查

在kettle中实现数据验证和检查 在ETL项目,输入数据通常不能保证一致性.在kettle中有一些步骤能够实现数据验证或检查.验证步骤能够在一些计算的基础上验证行货字段:过滤步骤实现数据过滤:javascript步骤能够实现更复杂的计算. 通常以某种方式查看那些数据是有缺陷的也是实用的,由于大多数ETL是无人值守执行的,所以通常ETL程序会把这些缺陷数据通知给ETL开发人员或管理员.建议把这些问题数据行保存到一个特定的公共表格中,以便跟踪这些数据:那么该表格应该包含一些元信息,如:执行转换的名

MVC中的数据验证

一  概述 关于数据验证和数据注解,是任何软件系统不可小觑的必要模块,在软件系统中起到举足轻重的作用,主要作用是为了保证数据安全性.防止漏洞注入和网络攻击. 从数据验证的验证方式来说,我们一般分为客户端验证和服务端验证(或者两种方式相结合),本篇文章主要讲解基于ASP.NET MVC框架的数据验证特性和数据注解. 二  数据验证 (一)ASP.NET MVC 内置六大类数据验证特性 在ASP.NET MVC中,验证特性定义在 System.ComponentModel.DataAnnotatio

CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据

1.下载OpenResty和Redis OpenResty下载地址:wget http://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz Redis下载地址:wget http://download.redis.io/releases/redis-2.8.6.tar.gz 2.安装依赖包 yum install -y gcc gcc-c++ readline-devel pcre-devel openssl-devel tcl perl