【Struts框架】第一节Action-简单的数据校验

假设要验证账号密码的正确性,把账号密码传进Action后,Action验证完毕后,如何将验证后的结果返回给静态界面(即前台)呢?Action里面又没有Servlet中的request和response等东西?方法就是:

添加对于属性校验的错误信息:addFieldError

addFieldError("XX","yyy");

XX是出错的信息名称(一般是属性名),yyy是这个错误的具体信息。

这个错误信息会随着跳转,进入前台页面,然后在前台将它取出来。

例子:

准备工作:
UserAction4.java:
package cn.edu.hpu.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction4 extends ActionSupport{
	private String name;
	
	public String add(){
		if(name==null||!name.equals("admin")){
			this.addFieldError("name", "name is error");
			return "error";
		}
		System.out.println("name="+name);
		return "success";
	}


	public String getName() {
		return name;
	}


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

struts.xml:
<package name="default" namespace="/javaee" extends="struts-default">  
    <action name="user4" class="cn.edu.hpu.action.UserAction4">
       <result name="success">/User_Add_success.jsp</result>
       <result name="error">/User_Add_error.jsp</result>
   </action>
</package> 

前台链接:
 使用addFieldError方法和s:fieldError标签简单处理数据调验:<br/>
<a href="<%=basePath %>javaee/user4!add?name=neck">添加用户</a><br/>

成功界面:
User_Add_success.jsp:
<html>
  <head>
    <title>My JSP 'User_Add_success.jsp' starting page</title>
  </head>
  
  <body>
    User Add success! <br>
  </body>
</html>

失败界面(下面详细介绍前台失败界面如何得到后台的错误信息):

首先加入标签库至工程:
(例如将标签库文件struts-tags.tld放入/META-INF/maven文件夹下)
在web.xml中配置:
<jsp-config>
	<taglib>
	<taglib-uri>/struts-tags</taglib-uri>
	<taglib-location>/META-INF/maven/struts-tags.tld</taglib-location>
	</taglib>
   </jsp-config>

在前台失败Jsp页面调用标签库
<%@taglib uri="/struts-tags" prefix="s"%>
uri指定标签库的位置
prefix指定标签的前缀是什么


下面写

方式一:
<body> 
    添加用户失败!! <br/>
    <s:fielderror fieldName="name"/>
    <br/>
</body>

其中s:fielderror标签就是取出对应fieldName的错误信息(前面设置的this.addFieldError("name", "name is error");这句)

s:fielderror标签的缺点是在静态页面以<ul>效果强制显示(所以在企业中应用不多)

方式二:
<body> 
    添加用户失败!! <br/>
    <s:property value="errors.name[0]"/>
    <s:debug></s:debug>
    <br/>
</body>

<s:debug></s:debug>会在静态界面中出现一个“[debug]”的错误链接,点击后会查看到你错误的信息(比如这个就是值栈错误,错误信息就在errors或者fieldErrors中,就是PropertyName和与之对应的PropertyValue(这里取得map类型的值))。

看了[Debug]之后,你就会明白,可以从初始化信息里面的errors或者fieldErrors中得到错误信息,所以就有了<s:property value="errors.name[0]"/>来获取错误信息(value="errors"取出的信息是{name=[name is error]},使用value="errors.name[0]"来取得name is error)

PS:同一个错误名添加多个错误信息也是可以的:
Action中写:
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");

jsp中取:
<s:property value="errors.name[0]"/>
<s:property value="errors.name[1]"/>

(value="errors"取出的信息是{name=[name is error,name is too long]},使用value="errors.name[0]"来取得name is error,使用value="errors.name[1]"来取得name is too long)

转载请注明出处:http://blog.csdn.net/acmman/article/details/44238869

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值