struts2的数据校验&常用OGNL表达式&ActionSupport

来源:互联网 发布:1064 mysql 编辑:程序博客网 时间:2024/06/10 04:19

数据校验

struts2 的后台校验

注意: 文件名必须是UserAction-user_register-validation.xml
即格式:[Action名]-[对应的action]-validation.xml
1. 在这里校验的加过会存储在struts的值栈中
2. 在jsp界面使用 <s:field fieldName=""/> 标签显示对应的错误信息
3. 在struts.xml文件中必须配置 <result name="input">/WEB-INF/jsp/register.jsp</result>

示例

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC        "-//Apache Struts//XWork Validator 1.0.3//EN"        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"><validators>    <!-- 校验用户名 -->    <field name="username">        <field-validator type="requiredstring">            <message>用户名不能为空!</message>        </field-validator>    </field>    <!-- 校验邮箱 -->    <field name="email">        <field-validator type="email">            <message>邮箱格式不正确!</message>        </field-validator>    </field></validators>

这里示例校验的是User类的字段包报的位置:
这里写图片描述

前台jsp界面显示

配置标签:
1. <s:fielderror fieldName="password"/>:对应struts的数据校验xml的配置字段
2. <s:actionerror/>:在Action类中定义的this.addActionError("xxx")方法
3.<s:actionmessage/> 对应 this.addActionMessage("xxx")方法

常用 OGNL表达式

  1. 判断<s:if test=""/>xxx<s:if><s:else>xxx<s:else>
  2. 在jsp页面获得session的值

    • <s:property value="#session.xxx" />
  3. Actionimplements RequestAware并实现默认方法

private Map<String, Object>request;    public void setRequest(Map<String, Object> arg0) {        this.request = arg0;    } request.put("xxx",xxx);
  1. jsp页面回显:
#request.xxx

ActionSupport中包含的对象

ServletActionContext和

获得request和respone对象

ServletActionContext.getRequest().getSession()                 .setAttribute("xxx",xxx);

jsp页面引用session中存放的值
#session.xxx

ActionContext

  • 值栈中存值:ActionContext.getContext().getValueStack().set("xxx", xxx);
    jsp页面引用
    知识通过变量名引用
<s:property value="xxx" />
  • ModelDriven模型驱动
    首先在action中已经实现了bean对象的模型驱动
    例如:
    public class ProductAction extends ActionSupport implements ModelDriven{
    //模型驱动
    private Product product = new Product();
    public Product getModel() {
    return product;
    }
    }
<s:property value="model.product" />
  • session中存值:ActionContext.getContext().getSession().put(key, value)
    在jsp页面获得xxx的值:
<s:property value="#session.xxx" />
0 0