struts 2.5 访问未定义 action 时报错的问题
转载请注明:
仰望高端玩家的小清新
使用 struts 的时候我们自己设计的action毕竟是有限的,那么我们就需要使用一种方法来限制用户输入未定义的action。
网上很多解决方案都是一个抄一个,没有自己的实践和总结。虽然我预感到很快我的这篇博客又会被爬虫盗走,不过还是写出来,给需要帮助的新人一点微小的贡献,少走一些弯路。
众所周知,struts 2.5 是支持注解配置的,因此我们当然应该尽可能遵循简单的原则。因此这篇博客是尽可能使用注解进行配置的。注解和 xml 配置各有利弊,因此通常我们需要结合使用注解和 xml。
我们直到,当我们访问未定义页面时,会出现报错,大意是找不到一个名为 XXX 的action。如何处理呢?经过我自己的测试和思考,我发现这是 struts 2 内部的 com.opensymphony.xwork2.config.ConfigurationException 的错误。我们如果使用 struts 自己的 <global-excepton-mappings/> 是无法捕获的。也就是说,struts 2 只能捕获后端抛出的异常,而对自身的异常无法简单的通过配置来捕获和处理。
那么问题来了,当用户访问一个不存在的aciton,如何跳转到友好的 404 页面呢?
基本的思路是:定义一个默认 action, 当找不到一个指定 action 时,就进入这个 action 并跳转到友好的 404 页面。
如果是基于 xml 配置,那我们随手一找,就能找到一大堆,我就不赘述了。
如果是基于注解,那么我们需要这么做:
1. 写一个 action 方法,专门处理上述情况
2. 将 action 的 result 指向我们指定的友好的 404 界面
3. 切记,不要在 xml 进行上述操作,而要将这个方法写在 java 类中
4. 在 xml 中配置一个默认的 package, 让所有 package 继承此 package,然后在这个默认的 package 中,引用 我们刚刚写好的 action 作为默认 action,然后就 ok 了。
实例如下:
在这个例子中,我的action 名称为 noSuchAction,是一个基于注解的 action
<package name="myDefault" namespace="/" extends="struts-default">
<default-action-ref name="noSuchAction"/>
</package>
struts 2.5 访问未定义 action 时报错的问题的更多相关文章
- 在ERP中定义用户时报错:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
在ERP中定义用户时. 报错: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间. 原因分析: ①没有正确初 ...
- OVF3为订单原因分配成本中心时报错“成本中心未定义”,消息号:VT806
问题:OVF3为订单原因分配成本中心时报错“成本中心未定义”,消息号:VT806.KS03检查成本中心数据是已经建立的. 原因:OVF3往右边拉动,还有一个需要填入的字段“有效起始日”,此字段值必须在 ...
- 错误: “WebForm_DoPostBackWithOptions”未定义
无论是ASP.NET WebForm 还是 ASP.NET MVC项目,在本地程序测试没问题,但是部署在IIS上访问就会出现 错误: “WebForm_DoPostBackWithOptions”未 ...
- .Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法。
方法一.浏览器设置成兼容模式. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/5653325/6642051 方法三.点击VS的工具菜单-- ...
- .NET4.0 __doPostBack未定义
方法一.浏览器设置成兼容模式. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/5653325/6642051 方法三.点击VS的工具菜单-- ...
- IE11出现“__doPostBack未定义”的解决办法。
方法一:浏览器设置成兼容模式,这个是超级掩耳盗铃方法,你就没想过其他人也会出这个问题. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/565 ...
- IE10、IE11出现“__doPostBack未定义”的解决办法。
方法一:浏览器设置成兼容模式,这个是超级掩耳盗铃方法,你就没想过其他人也会出这个问题. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/565 ...
- IE10-IE11在NET4.0下出现“__doPostBack未定义”解决方案
IE10在NET4.0下出现"__doPostBack未定义"的办法 参考文章: http://blogs.msdn.com/b/scott_hanselman/archive/2 ...
- Aaja.pro 未定义
问题描述:安装新系统后,将代码迁至新系统,所有用到ajaxpro框架调用ajax方法时均报“xx未定义”的错: 解决问题的过程 : 1.看看你在前台调用的方法的命名空间,方法名和后台的是否对应.在后台 ...
随机推荐
- [Leetcode] Length of last word 最后一个单词的长度
Given a string s consists of upper/lower-case alphabets and empty space characters' ', return the le ...
- 使用es6一行搞定文字溢出省略号
使用的是es6中扩展字符串方法参考地址 padStart(),padEnd() 使用padStart() 两个参数padStart(字符串最小长度,用来补全的字符串): 例如 let str = '1 ...
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) B
B. Problems for Round time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- java的GC与内存泄漏
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...
- mysql_存储过程和函数
存储过程和函数 1.什么是存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对 ...
- JVM 性能排查 自己做的笔记
Live Memory 1.Class Tracker 展示类或包的实例个数与时间的关系.需要录制才可以看到. 1)可以添加指定的类或包. 2.All Objects 查看所有类的实例个数和大小.可以 ...
- 「6月雅礼集训 2017 Day2」C
[题目大意] 有一棵n个点的完全二叉树,边权均为1,每个点有小鸟容量c[i] 依次来了m只小鸟,第i只小鸟初始位置在pos[i]上,问来了x只小鸟的时候,怎样安排小鸟的路线可以使得小鸟移动的边权和最小 ...
- jzoj2700 【GDKOI2012模拟02.01】数字
传送门:https://jzoj.net/senior/#main/show/2700 [题目大意] 令n为正整数,S(n)为n的各位数字之和,令
- usaco 2000 contest 滑雪
2013-09-11 10:22 [题目大意]给定N个点的高度和M条相连的路线(单向),从最高点向下走, 到无法走时为一条路径,求不同的路径数,(一节点不同就叫不同) [输入样例] 4 5 (N, ...
- linux驱动基础系列--linux spi驱动框架分析(续)
前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和s ...