struts2--(3)--一些小的知识---简单数据验证信息回显问题

----struts2标签示例说明可参考网页:http://www.roseindia.net/struts/struts2/struts-2-tags.shtml


简单的数据校验

在struts2中,action在接受到用户提交的数据时,有时需要对其进行校验,检验成功或失败需要向用户
回显相关的信息,为了能够方便在jsp页面回显相关信息,action提供了一些方法,诸如:
addFieldError addActionError, addActionMessages等,前者主要是针对一些属性校验的问题,
后者是action本身的问题,最后一个一般是action正确的处理结果。如果使用这些方法添加了一信息,则这些
信息可以在jsp页面通过标签获取到,相关标签为:
actionerror, 它用来获取addActionError方法添加的内容
actionmessage,它用来获取addActionMessage方法添加的内容
fielderror, 它用来获取addFieldError方法添加的有关属性的内容
property,它是一个一般便签,主要是用来获取相关属性值。

比如,action校验属性例子:
import com.opensymphony.xwork2.ActionSupport;


		public class MyAction2 extends ActionSupport {
			private String name;
			private String password;
			
			public String add() {
				if(name == null || !name.equals("admin")) {
					this.addFieldError("name", "name is error");
					this.addFieldError("name", "name is too long");	
					this.addFieldError("password", "password is wrong");
					this.addActionError("name is wrong ,action error");
					return SUCCESS;
				}else{
					this.addActionMessage("name is valid");
					return SUCCESS;
				}
				
			}


			public String getName() {
				return name;
			}


			public void setName(String name) {
				this.name = name;
			}


			public String getPassword() {
				return password;
			}


			public void setPassword(String password) {
				this.password = password;
			}
		}

超链接jsp页面:
<a href="action/input!add?name='zhangsan'">点击</a>

success.jsp页面
<s:fielderror />
		<s:fielderror fieldName="name" theme="simple"/>  
			<br />
		<s:actionmessage/><br />
		<s:property value="errors.name[0]"/><br />
		<s:property value="actionErrors[0]" /><br />
		<s:debug></s:debug>


error.jsp页面
<s:actionerror /><br />

需要说明的是<s:fielderror />要是没有指定fieldName,它将返回所有addFieldError方法添加的信息,而
添加了FiledName的话,将返回由addFieldError添加有关此属性的所有内容,如下:
<s:fielderror />返回结果如下:
.name is error
.name is too long
.password is wrong

<s:fielderror fieldName="name" theme="simple"/>返回结果如下:
.name is error
.name is too long

<s:actionmessage />返回由addActionMessage方法添加的内容
<s:actionerror />返回由addActionError方法添加的内容

值得说明的是,上面三个表签,其返回的值都是带有css格式的内容,而不是纯字符串内容。要获取到纯字符
串内容,需要使用到标签<s:property>标签。在说明property标签前,有一个内容需要先弄明白,上面通过三种add
方法添加的内容都是加入到哪里去了?struts2其实将上面的内容都加入到了一个叫做value stack容器里,它其实
是一个栈,它一般会将action的相关属性添加进去。如:

Value Stack Contents

ObjectProperty NameProperty Value
cn.itcast.action.MyAction2textsnull
actionErrors[name is wrong ,action error]
errors{name=[name is error, name is too long], password=[password is wrong]}
fieldErrors{name=[name is error, name is too long], password=[password is wrong]}
errorMessages[name is wrong ,action error]
containerThere is no read method for container
name'zhangsan'
localezh_CN
actionMessages[name is valid]
passwordnull
com.opensymphony.xwork2.DefaultTextProvidertextsnull

下图是一个对上述值栈的一个相关属性的键值对示意图:

此栈中包含action的相关的texts, actionErrors, errors, fieldErrors, errorMessages, actionMessages及action定义的相关属性
,这里为name和password. 其中actionErrors值对应的类似一个数组,errors和fielderrors类似一个map.
这些值都可以通过<s:property>标签来获取,它需要借助ognl表达式,下面是其获取的示例:
<s:property value="errors.name[0]"/> 
<s:property value="actionErrors[0]" /><br />
前者用来获取errors值(map集合)中的key为name的值(数组)中的第一个值。即name is error
后者是获取actionErrors值中的第一个值。

标签<s:debug></s:debug>是用来显示上述值栈的,只需要在jsp页面上添加此标签即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值