Struts2(五) 校验简单数据类型方法 和 值栈的说明

来源:互联网 发布:企业怎么做网络销售 编辑:程序博客网 时间:2024/06/05 05:22

一、值栈的讲解、什么是值栈呢?

通过对struts2的一段时间的接触,将自己对OGNL的核心值栈说说,值栈:简单的说,就是存放action的堆栈,当我们提交一个请求道服务器端 action时,就有个堆栈,如果action在服务器端进行跳转,所有action共用一个堆栈,当需要保存在action中的数据时,首先从栈顶开始 搜索,若找到相同的属性名(与要获得的数据的属性名相同)时,即将值取出,但这种情况可能出现找到的值不是我们想要的值,那么解决此问题需要用TOP语法 和N语法来进行解决。 重最要的是遵循”后进先出“的原则。


值栈说明:

error是一个Map,Map里面有包含着数据;例如上图的errors举例子,里面的name就是个数组,具体获取值看以下案例。

二、Struts2 简单数据类型校验即将开始了;唠叨下 这是一个其实原理很简单

第一步:连接请求到对应的Action进行处理,在Action中定义同名字的参数,赋予set 和 get 方法;

第二步:对获取到的参数进行判断。

第三步:检验成功或失败结果返回。

第四步:校验失败后页面值显示。

2.0、代码结构图



2.1、JSP页面请求

<a href="<%=path %>/test03_DataValiation_01?name=flx">使用addFieldError方法 和 s:fieldError标签简单处理数据校验</a>

2.2、配置文件 struts.xml 处理

<?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.enable.DynamicMethodInvocation" value="false" /> -->   <!-- 设置为开发者模式  修改之后不需要重启服务器 -->    <constant name="struts.devMode" value="false" />    <package name="default" namespace="/" extends="struts-default">        <!-- 简单处理数据类型 -->    <action name="test03_*" class="com.flx.actions.dataValiation.SimpleDataValiation" method="{1}">    <result>    /jsp/getParam.jsp    </result>    <result name="fails">    /jsp/fails.jsp    </result>    </action>    </package></struts>

2.3、Action处理类

package com.flx.actions.dataValiation;import com.opensymphony.xwork2.ActionSupport;/** *  * @author FuLX *  * @2016-12-25上午8:22:58 *  *  功能:简单数据类型验证 使用addFieldError方法和s:fieldError标签简单处理数据校验 */public class SimpleDataValiation extends ActionSupport {private static final String FINAL_FLX_SUCCESS = "success";private static final String FINAL_FLX_FAILS = "fails";private String name;public String DataValiation_01() {System.out.println("后台接收到的参数:" + this.name);if (this.name != null && !"admin".equals(this.name)) {this.addFieldError("name", "数据校验不通过");this.addFieldError("name", "name errors_01");return FINAL_FLX_FAILS;}return FINAL_FLX_SUCCESS;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

2.4、fails.jsp页面说明

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!-- 引用Struts 标签库 --><%@taglib uri="/struts-tags" prefix="s"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>数据校验失败</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page">  </head>  <body>          错误信息展示   <s:fielderror fieldName="name" theme="simple"/>   <br/>   <h4>通过值栈去获取值</h4>  errors:  <s:property value="errors"/><br/>  errors.name: <s:property value="errors.name"/><br/>  errors.name[0]: <s:property value="errors.name[0]"/><br/>  errors.name[1]: <s:property value="errors.name[1]"/><br/>   <s:debug></s:debug>  </body></html>

2.5、页面显示


0 0
原创粉丝点击