strust知识之四

ValueStack对象
概述:
Action类通过属性可以获得所有相关的值,如请求参数属性值等。要获得这些参数值,我们要做的唯一一件事就是在Action类中声明与参数同名的属性,在Struts2调用Action类的Action方法(默认是execute方法)之前,就会为相应的Action属性赋值。要完成这个功能,有很大程度上,Struts2要依赖于ValueStack对象。这个对象贯穿整个Action的生命周期,每个Action类的对象实例会拥有一个ValueStack对象。
也就是说:
value对象是进行参数传递的工具
并且伴随action整个生命周期
包括两部分:
1、放在根元素中
这里的特点有:
1》通过在action的值对象中找到它
2》可以放普通数据
3》访问可以不带#
下面上代码:

ValueStack valueStack = ActionContext.getContext().getValueStack();   
CompoundRoot root = valueStack.getRoot();
User user=new User();
root.push(user);

2.放在非根元素     Actionntext.getContext().getContextMap().put("request","request域对象的数据");        ActionContext.getContext().getSession().put("session","我是Session域对象的数据");       ActionContext.getContext().getApplication().put("application","Application域对象的数据");

返回的jsp页面

 <!--struts常用的标签-->
<s:form name="sName" id="sNamId" theme="simple" action="/login">
<s:textfield id="userName" value="" label="用户名"></s:textfield>  
<s:textfield id="userPwd" value="" label="密码" ></s:textfield>  
 <!--提交的标签-->
 <s:submit value="提交"></s:submit>      
     </s:form>
     <!--收集错误信息的标签-->
     <s:fielderror></s:fielderror>
     <!--收集指定的错误信息-->
     <s:fielderror name="user.userName"></s:fielderror>
     <!--页面的调试-->
     <s:debug></s:debug> 
     <!--struts取值的标签-->
         下面是根元素的数据的取值方式:
     <s:property value="userName"/>  
             非根元素的取值方式
             访问request域可以不带request.
session,application是存在{}对象中的,request是直接存的值
      <s:property value="#name"/>
     <s:property value="#session.name"/>
     <s:property value="#application.nam"/>

struts2的数据校验方式

1、前端通过js校验
2、服务端进行校验
实际上这是控制器的功能
代码的方式
方式一、校验所有的方法
创建一个action继承actionSupport
重写validate方法
校验逻辑写在里面
方式二、校验置顶方法
如要校验register这个方法
只需添加一个validate+register的方法

public void validateRegister() {
        校验逻辑...
        super.validate();

服务端校验之二、
在xml文件中校验
全局验证
适合于要校验的东西较多的情况
在/com/opensymphony/xwork2/validator/validators/default.xml这个目录下找到服务器为我们提供校验文件
1、这个文件必须位于要校验的action同目录,文件名必须是action名-validation.xml
2、需要服务器的配置头
3、要验证字段的书写方式
区分为type=”requiredstring”配置不同

 <field name="user.userName">
<field-validator type="requiredstring">
<message>用户名为空</message>

局部验证
文件名改为

Action类名-Action对象-validation.xml

模型驱动
功能如下:

数据回显
防止表单重复提交

1、实例化这个对象(实体)
2、继承ModelDriven<实体类名>
数据回显功能实现:

ValueStack valueStack = ActionContext.getContext().getValueStack();
valueStack.push(实体对象);

这样数据就回显到jsp表单页面了,防止表单表单重复提交的方式还有更改数据提交方式转发为重定向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值