文档章节

Struts2 Tips

cwalet
 cwalet
发布于 2014/08/25 11:52
字数 831
阅读 65
收藏 1

1.如果action中使用了validate方法并且同时配置了xml文件校验框架,则会先从校验框架判断输入错误,然后转入validate方法中去继续执行直到该方法return、方法执行结束、遇到执行fieldError()或actionError()这三种情况,因此两边的错误信息都会显示出来。因此不推荐同时使用这两种校验方式,此外对于validate方法中如果出现actionError或fieldError则返回INPUT的result视图,但是在execute或其它action method方法中,则不会返回,而是会继续执行直到抛出异常或方法执行结束、以及遇到显示的return值。

2.struts配置文件搜索顺序

struts.xml

struts-plugin-xml

struts.properties

web.xml

3.action配置节点默认值

name无默认值,必须定义

class:com.opensymphony.xwork2.ActionSupport

method:execute

result:success

因此若忽略class、method及result.name的配置,即使用默认,将直接转向result目标地址

4.struts标签中使用el表达式抛出的异常

According to TLD or attribute directive in tag file, attribute value does not accept any expressions

参见:Struts 2不再支持在struts tag里使用JSP EL表达式有关Struts2的标签不支持<%%>和$(EL表达式的符号)的问题

在struts2的2.0.11及以上版本的changelog里,官方已经说了不再支持EL表达式,官方说的是因为安全问题,这个在 JE上已经有所讨论了。 也不支持JSP标签:'<%%>'。

5.当struts2 action不继承任何类时(ActionSupport或Action),只有该'action'提供了标准的execute方法才能被配置到struts.xml中并发挥作用。

public String execute() {
    return "success";
}

但是在该类中仍可以使用ActionContext的方法取得servlet容器中的request及session等对象。

6.struts校验框架对指定方法进行校验时,校验文件的名字是:ActionClassName-ActionMappingName-validation.xml

即,action简单类名-访问action的路径名(就是在struts.xml中配置的action节点中的name属性)-validation.xml.

参见:struts2验证框架中在action中定义多个方法的问题

<action name="user_add" class="com.UserAction" method="add"> 
    <result name="input">111.jsp</result> 
    <result name="success">222.jsp</result> 
</action>
我们在配置文件中指定了method其实和验证没什么关系,比如我们指定method="add" 然后我们验证文件配置成UserAction-add-validation.xml。这样struts验证是不会成功的。 因为验证跟本就跟method指定的方法无关,而是和name指定的名字有关, 如果我们的配置文件这样命名:UserAction-user_add-validation.xml 那么你才能验证成功

7.要使action类自动执行validate放发必须实现com.opensymphony.xwork2.Validateable接口,该接口只有一个方法:public void validate();如果已经继承了ActionSupport类(该类实现了Validateable接口),则无需再实现Validateable接口,当action执行的时候将在调用execute方法(或其他自定义方法)之前自动执行validate方法已实现一些前置校验功能。

参考:利用Validateable接口实现编程验证struts2 数据校验 ( Validateable,validation ) (1)

附:附上一些从传智播客Struts_2.1.8中截取的图片

  1. 搭建Struts2开发环境——Struts2在Web中的启动配置
  2. Action名称的搜索顺序
  3. Action中各种result转发类型


 


© 著作权归作者所有

cwalet
粉丝 44
博文 111
码字总数 87663
作品 0
其他
私信 提问
用eclipse搭建struts2,运行tomcat9报错...求大神指点..我在MyEclipse上运行是没问题的,在下新手,不知道是少了jar包还是什么问题

信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in t......

编号404
2017/07/02
229
0
struts2与struts的区别和联系

struts2比struts有以下的优点: 1.在体系结构方面更优秀: 1.1>类更少, 更高效: 在Struts2 中无需使用 “ActionForm” 来封装请求参数.。 1.2>扩展更容易: Struts2通过拦截器完成了框架的大部分...

长平狐
2012/09/03
155
1
SSH-Struts第三弹:传智播客视频教程第一天上午的笔记

一、 框架概述 1、三大框架 : 是企业主流 JavaEE 开发的一套架构 Struts2 + Spring + Hibernate 2、 什么是框架?为什么要学框架 ? 框架 是 实现部分功能的代码 (半成品),使用框架简化企...

candy-yun
2014/03/26
0
0
SSH框架之struts2专题1:Struts2入门

1 Struts2入门 1.1 Struts2简介 Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。 1.2 Struts2下载与版本 Stru...

极客微信条
2018/01/02
0
0
Spring MVC与Struts比较

Struts2与SpringMVC都是比较优秀,也是被广泛使用的Web开发框架,那么他们之间有什么区别呢?今天小博老师就跟大家来讨论下这个问题。 Struts工作流程图 Struts与Spring之间主要有以下几点区...

博为峰教研组
2016/11/24
3
0

没有更多内容

加载失败,请刷新页面

加载更多

android6.0源码分析之Camera API2.0下的Preview(预览)流程分析

本文将基于android6.0的源码,对Camera API2.0下Camera的preview的流程进行分析。在文章android6.0源码分析之Camera API2.0下的初始化流程分析中,已经对Camera2内置应用的Open即初始化流程进...

天王盖地虎626
9分钟前
0
0
java 序列化和反序列化

1. 概述 序列恢复为Java对象的过程。 对象的序列化主要有两 首先我们介绍下序列化和反序列化的概念: 序列化:把Java对象转换为字节序列的过程。 反序列化:把字节序列恢复为Java对象的过程。...

edison_kwok
20分钟前
0
0
分布式数据一致性

狼王黄师傅
今天
1
0
经验

相信每位开发者在自己开发的过程中,都会反思一些问题,比如怎样提高编程能力、如何保持心态不砍产品经理、996 之后怎样恢复精力……最近开发者 Tomasz Łakomy 将他 7 年的开发生涯中学习到...

WinkJie
今天
4
0
从源码的角度来看SpringMVC

SpringMVC核心流程图 简单总结 首先请求进入DispatcherServlet 由DispatcherServlet 从HandlerMappings中提取对应的Handler 此时只是获取到了对应的Handle,然后得去寻找对应的适配器,即:H...

骚年锦时
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部