在Struts2中使用DisplayTag翻页时的ognl.InappropriateExpressionException解决方案在struts2中使用displayTag组件进行翻页时出会出下面的异常,异常的原因是因为在翻页时传递的参数名不规范,使用了减号(如:?d-443618-p)

http://localhost:8088/HBM_Student/getDepartments.action?d-443618-p=1

而这个参数在提交时,strust2中的 ParametersInterceptor拦截器会对提交的参数进行验证,验证时使用的是正则表达式,[b]原代码[/b]如下:

private String acceptedParamNames = "[[\\p{Graph}\\s]&&[^,#:=]]*";
private Pattern acceptedPattern = Pattern.compile(acceptedParamNames);
而定义的正则表达式中不支持减号(-),所以才出现下面异常。

[b]解决方法:[/b]

在自己项目src中创建包,包名[color=red]只能[/color]为:com.opensymphony.xwork2.interceptor

1. 创建类:ParametersInterceptor

2. 复制Struts2中的xwork-2.1.2.jar包中的com.opensymphony.xwork2.interceptor.ParametersInterceptor文件内容,并粘贴到刚创建的类中。

3. 找到正则表达式的代码,加入减号:

private String acceptedParamNames = "-[[\\p{Graph}\\s]&&[^,#:=]]*";
private Pattern acceptedPattern = Pattern.compile(acceptedParamNames);

至此,问题真正的解决。

这里说一下,网上有同志说把struts.devMode值设为false,这种方式并一定会起作用,但我提供的方法一定有效。

21:07:56,953 WARN OgnlValueStack:49 - Error setting value
ognl.InappropriateExpressionException: Inappropriate OGNL expression: (d - 443618) - p
at ognl.SimpleNode.setValueBody(SimpleNode.java:257)
at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
at ognl.SimpleNode.setValue(SimpleNode.java:246)
at ognl.Ognl.setValue(Ognl.java:476)
at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:192)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:155)
at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:143)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:284)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:198)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:206)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
at java.lang.Thread.run(Thread.java:619)

在Struts2中使用DisplayTag翻页时的ognl.InappropriateExpressionException解决方案相关推荐

  1. python翻页功能url不变_爬取Ajax动态加载和翻页时url不变的网页

    这两天投了一家公司的爬虫实习生,笔试题是完成一个爬虫的小需求.网站没有什么反爬的高级技巧.但是有非常常见的,并不是针对我们爬虫的,却让我们新手很难理解的ajax动态加载技术和乍一看不明白的翻页时不变的 ...

  2. elementui中el-table实现翻页、全选

    问题描述 在最近的一个项目中,我需要实现表格的翻页,并且还要实现全选.多选功能 众所周知,el-checkbox默认样式不好改,所以在这里我没有用elementui中的多选框,用的是<input ...

  3. SUI Moblie 中出现$.init() 或$.alert()not a function和自定义Moble中的嵌套标签页时,点击tab2时一直出现tab1的内容

    1.$.init() not a function. sum插件与jQuery库出现冲突,sm.js 的引用顺序导致$.alert()无效,不要放在de ><head>de>中 ...

  4. Struts2中采用Json返回List对象数据为空解决方案

    Struts2中采用Json返回List对象数据为空解决方案 参考文章: (1)Struts2中采用Json返回List对象数据为空解决方案 (2)https://www.cnblogs.com/wa ...

  5. 1【计算机专业必备基础知识】《计算机体系结构基础》(胡伟武)速读笔记(上篇)“这位同学,请描述一下PPT完成翻页时电脑软硬件是如何协作的?”

    前言 在学习计算机的这几年,一直有些很基础的问题困扰着我,C++.Java照写,但总感觉没有底气.本科学过操作系统.数据结构.微机原理.数字电路,(不知是不是因为我给忘干净了还是咋的,)平时遇到学术道 ...

  6. Android中实现滑动翻页—使用ViewFlipper

    有一些场景,我们需要向用户展示一系列的页面.比如我们正在开发一个看漫画的应用,可能就需要向用户展示一张一张的漫画图片,用户使用手指滑动屏幕,可以在前一幅漫画和后一幅漫画之间切换.这个时候ViewFli ...

  7. ubuntu中搜狗输入法怎么翻页

    ubuntu中的搜狗输入法不能使用使用win中的[ ] 左右括号键进行翻页. 但是可以使用 - = 两个键翻页,与左右括号效果相同.

  8. struts2中welcome-fileindex.action/welcome-file直接设置action,404的解决方案

    这几天的项目页面的访问全部改为.action访问,在修改首页时遇到了问题.将web.xml文件中<welcome-file>index.action</welcome-file> ...

  9. 【iOS】如何在UICollection中实现特殊翻页动画效果

    需求: 实现类似下列的动画效果,要求,左右可以滚动UICollection浏览,向上滑动可以把当前图片丢进垃圾桶 特殊UICollection动画效果 技术点: 需要结合UIScrollView回调跟 ...

最新文章

  1. [dp] Jzoj P5804 简单的序列
  2. Apache服务器多站点配置
  3. python爬虫urllib文档_11.【文本】Urllib(下) - 零基础学习Python爬虫系列
  4. Redis 实现延迟队列?深深被折服!!
  5. LUA Metatables
  6. dsniff 和 Ettercap 和 bettercap 详解 - 网络嗅探工具包
  7. 多关卡连连看php源码_奇怪的连连看ios版是一款非常好玩的手机消除闯关游戏,奇怪的连连看采用了最经典的三消玩法,游戏中有着非常多的游戏关卡,是一...
  8. 36.母板的介绍与使用
  9. 离职因多写3个字被索赔2.9万,这家公司的操作让网友直呼拳头摁了......
  10. 【图像重建】基于matlab迭代步长自适应图像超分辨重建【含Matlab源码 048期】
  11. iOS 实现二维码的彩色效果
  12. 怎么获得红米手机5 Plus的Root超级权限
  13. python之re模块详解
  14. java+OpenCV3 +百度OCR(或tesseract) 识别表格数据
  15. RAID技术规范简介 RAID0 RAID1 RAID2 RAID3 RAID4 RAID5 RAID6 RAID7
  16. cad转dxf格式文件太大,怎样操作将多张CAD图纸文件转换成高版本的DXF格式?
  17. 手绘如何学?零基础手绘教程
  18. 入侵的50种方法【转】
  19. C语言:【换钱问题】人民币问题
  20. 达梦数据库DM8安装ODBC驱动无法正常连接

热门文章

  1. linux scp拷贝软连接,scp 拷贝 针对软连接的问题
  2. dw修改服务器,dw怎么更改远程服务器
  3. Windows下一键搭建MBP系统,支持多种版本任意选择,免费永久使用,多系统使用新方案
  4. msfconsole暴力破解ssh
  5. 多文件程序X32dbg动态调试
  6. excel计算二元线性回归_使用Excel进行回归分析
  7. Sequoiadb分布式数据库入门使用教程
  8. 微软iis服务器并发量,服务器IIS最大并发数
  9. [转]Unity3D 唤醒微信 打开微信(非微信登录、微信分享)
  10. 朱贵便唤小喽罗分付 水浒