• 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"/>
    
  • 相关阅读:
    我的openwrt学习笔记(四):OpenWrt源码下载
    算法系列之“汉若塔”
    尖峰在线Oracle OCM实战 --开创国内Dtrace先河!
    Android开发屏幕适配知识点
    【cocos2d-js官方文档】十九、Cocos2d-JS单文件引擎使用指引
    PHP重载
    作为一个在城市打拼的人。
    关于马云最帅的照片是哪一张?!你们感受下!哈哈哈哈!(10P)
    Banana PI (香蕉派) 安装 ubuntu-core-14 最小核心的操作步骤
    (转载)偏序集的Dilworth定理学习
  • 原文地址:https://www.cnblogs.com/yzy-blogs/p/6701367.html
Copyright © 2020-2023  润新知