【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

时间: 2024-08-30 02:54:10

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

Struts2学习笔记(6)-简单的数据校验_java

数据校验是在项目开发中不可缺少的一部分,用户登录时.密码验证时都需要,当然要做的首先是获得用户输入的内容,然后对内容进行验证,一般都是从数据库中读出然后校验,如果错误则显示提示信息,正确则进入用户主界面. 下面用一个简单小例子来说明下步骤: 1.index的表单 复制代码 代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="U

Akka框架——第一节:并发编程简介

本节主要内容: 1. 重要概念 2. Actor模型 3. Akka架构简介 多核处理器的出现使并发编程(Concurrent Programming)成为开发人员必备的一项技能,许多现代编程语言都致力于解决并发编程问题.并发编程虽然能够提高程序的性能,但传统并发编程的共享内存通信机制对开发人员的编程技能要求很高,需要开发人员通过自身的专业编程技能去避免死锁.互斥等待及竞争条件(Race Condition)等,熟悉Java语言并发编程的读者们对这些问题的理解会比较深刻,这些问题使得并发编程比顺

Struts框架在小区物业管理系统中的应用

摘要  Struts提供了一个非常好的MVC框架,在Web应用开发中把界面和业务逻辑分离,提高了代码的可重用性和灵活性.文中首先介绍了Struts概念和体系结构,阐述了Struts的工作原理.然后介绍了小区物业管理系统各个功能模块以及整个系统基于Struts的开发流程.最后,通过一个应用示例,详细介绍了Struts框架在系统开发中的应用. 关键词  MVC:Struts框架:Web:物业管理系统:  前言  物业管理系统是近年来为适应小区建设和管理而兴起的一种新型产业,它的出现为住宅小区的现代化

简单说明Java的Struts框架中merge标签的使用方法_java

merge标签合并标记需要两个或两个以上的列表作为参数,并把它们合并在一起,如下所示: <s:merge var="myMergedIterator"> <s:param value="%{myList1}" /> <s:param value="%{myList2}" /> <s:param value="%{myList3}" /> </s:merge> <

其实添加数据也可以这样简单——表单的第一步抽象(针对数据访问层)《怪怪设计论: 抽象无处不在 》有感

更正:不好意思,昨天晚上思路有点混乱.有几个前提忘记说明了,现在补充一下. 1.缩小范围.按照由简到难的思路,这里先讨论最简单的添加数据的情况.就是单表的添加和修改:这里讨论的是webform的情况. 2.第一步抽象是针对数据访问层的抽象. 如果我没有理解错的话,现在大多数人的做法是:有一个表(或者几个有关联的表)在数据层里就要有一个"函数"与之对应, 如果采用的是SQL语句的方式的话,那么函数的内筒就是组合SQL语句的代码, 如果采用的是存储过程的方式的话,那么函数的内筒就是给存储过

一脸懵逼学习Struts数据校验以及数据回显,模型驱动,防止表单重复提交的应用。

1:Struts2表单数据校验: (1)前台校验,也称之为客户端校验,主要是通过Javascript编程的方式进行数据的验证. (2)后台校验,也称之为服务器校验,这里指的是使用Struts2通过xml配置的方式进行表单数据的校验. (3)代码方式验证Action中所有的方法:代码方式验证Action中指定的方法:xml方式验证Action中所有的方法:xml方式验证Action中指定的方法: 2:代码方式验证Action中所有的方法(自己记得导jar包和我配置web.xml文件,自己脑补吧):

基于MVC模式的Struts框架概述

作者:yarshray   关键字: Java  J2EE  MVC  JSP  Servlet  MVC  Struts 内容简介:        MVC设计模式成为了目前十分流行的一种设计方法.它是一种软件的设计方法模式.并且被大量的开发和实践所证明.因此本文通过介绍Struts框架这种已经实现了MVC模式的软件构件框架了讨论该模式的优势和如何投入到软件开发中去.        本文内容注重理论和实践相结合,比较系统的从多层设计方式到分布式软件开发中所用到的技术,从而切入目前Sun公司退出的

基于MVC模式的Struts框架研究与应用

摘要: Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发.本文讨论了Struts框架实现MVC模式的原理与方法,给出了一个具体的应用实例. 分布式企业应用软件结构复杂.涉及多种技术,对设计开发人员提出了很高的要求.在此情况下,运用设计模式――可复用的设计方案进行软件的设计开发十分必要.MVC模式已被证明是一种成功的软件设计模式,本文主要讨论了一种实现MVC模式的应用框架――Struts,并通过一个实例展示了Struts框架实现MVC模式的方法.

表现层框架之争 JSF与Struts框架的异同

js Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,我们下面进行详细分析比较. 首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute. 在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说