struts2使用 displaytag 分页异常的处理
2011-07-09 13:18
267 查看
displaytag翻页 异常ognl.InappropriateExpressionException: Inappropriate OGNL expression: (d - 443618) - p
异常的原因是因为在翻页时传递的参数名不规范,使用了减号
(如:http://localhost:8080/HRMS2.0/getDepartments.action?d-443618-p=1)
而这个参数在提交时,strust2中的 ParametersInterceptor拦截器会对提交的参数进行验证,验证时使用的是正则表达式,原代码如下:
private String acceptedParamNames = "[[//p{Graph}//s]&&[^,#:=]]*";
private Pattern acceptedPattern = Pattern.compile(acceptedParamNames);
而定义的正则表达式中不支持减号(-),所以才出现下面异常。
解决方法:
<package name="default" extends="struts-default">
<interceptors>
<interceptor-stack name="defaultStack"><!-- 配置一个拦截器-->
<interceptor-ref name="staticParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo..*,d-..*</param><!-- 支持建号变量名 -->
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack"/>
<action name="sysProcess" class="org.zzzy.erp.web.action.SysAction" method="{1}">
<result name="success">/${target}.jsp</result>
<result name="list" type="redirectAction">sysUser_toList</result>
</action>
</package>
异常的原因是因为在翻页时传递的参数名不规范,使用了减号
(如:http://localhost:8080/HRMS2.0/getDepartments.action?d-443618-p=1)
而这个参数在提交时,strust2中的 ParametersInterceptor拦截器会对提交的参数进行验证,验证时使用的是正则表达式,原代码如下:
private String acceptedParamNames = "[[//p{Graph}//s]&&[^,#:=]]*";
private Pattern acceptedPattern = Pattern.compile(acceptedParamNames);
而定义的正则表达式中不支持减号(-),所以才出现下面异常。
解决方法:
<package name="default" extends="struts-default">
<interceptors>
<interceptor-stack name="defaultStack"><!-- 配置一个拦截器-->
<interceptor-ref name="staticParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo..*,d-..*</param><!-- 支持建号变量名 -->
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack"/>
<action name="sysProcess" class="org.zzzy.erp.web.action.SysAction" method="{1}">
<result name="success">/${target}.jsp</result>
<result name="list" type="redirectAction">sysUser_toList</result>
</action>
</package>
相关文章推荐
- struts2使用 displaytag 分页异常的处理
- Struts2使用Displaytag导出Excel,抛出nullException异常的处理
- 使用struts2 做客户端校验时抛出freemarker模版错误异常的处理
- struts2之使用JSON插件实现Ajax(处理hibernate的POJO类时出现的异常)
- struts2 与 spring 使用aop处理Action异常
- 商务综合管理-day2~5 分页实现,shiro(验证授权,MD5Hash加密),struts2全局异常处理
- struts2配置导致jsp使用标签库异常的处理
- 使用过滤器、struts2处理乱码简析
- 使用Spring实现异常统一处理【四】--error-page中对异常进行log
- 使用DLL时如何处理“System.NullReferenceException”类型的异常
- 使用lldb来处理以下三种场景: 死循环、异常断点、多线程
- 007 使用SpringMVC开发restful API五--异常处理
- 前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端。前端控制器既可以使用Filter实现(Struts2采用这种方式),也可以使用Servlet来实现(spring MVC框架)。
- Java新手的通病[4]:异常处理使用不当
- 对使用 C++ 异常处理应具有怎样的态度?
- Glide使用过程中遇到timeout异常的处理方式
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积
- Java的异常处理及throw的使用
- C# 之 读取Word时发生 “拒绝访问” 及 “消息筛选器显示应用程序正在使用中” 异常的处理
- struts2: lesson four struts2的异常处理,validate验证,xml,annotation三种方式的验证,I18n国际化