整合spring之后,struts2里面的自定义拦截器的invocation.invoke()总是返回input
这个真的是整死我了,还好看见了一篇博客提示了我,
解决方法:
在spring的bean配置中我没有设置action的作用域为prototype,也就是多例的,如果不设置则就会是默认的singleton。
也就是我们每次去调用action的时候都应该是一个新的action,而不是之前的action,所以就应该是多例模式的,而不是单例模式
哎!整死我了!
我把原文博客分享在这里:
https://blog.csdn.net/zml_2015/article/details/50266783
后来我竟然又遇到了这个问题,是在文件上传的时候遇到的,找了许久许久啊!这篇博客写的很好,我应该要自己根据他说的排查的
https://blog.csdn.net/zc_ad/article/details/70146053
如果登陆页面找到对应的action后,struts2默认在execute方法执行之前,会先执行validate验证方法,如果发现有errors,直接就中转到input所指向的页面.跳转到input之前就根本没有执行action的方法.
画面事件响应,提交表单后,通过struts2的配置文件找到action,执行了其中的get,set方法,然后直接返回input,不走对应的方法。
1.可能是由于某个参数传递失败导致的。struts2有自动验证的一些机制,例如:你用int age 提供了get,set方法但是你页面出入的是字符串,那struts2的拦截器会直接return input的,检查一下 你定义的变量和传进的参数类型是否匹配。
2.你可能用了spring,在spring的配置文件中的bean没有设置singleton或者scope属性,singleton默认是"true",scope默认是"singleton"。如果你没有设置这个属性,相当于是单例模式,每次都用的是第一次产生的action对象,每次访问都会把信息存储在这个对象中。当你有一次访问出错,进入异常时,这个action对象的ActionErrors属性就可能有值。这时你再通过画面访问这个action时,就会直接返回input。在有必要的情况下,必须把action对应的bean的singleton设为"false",scope设为"prototype"。
还有就是我上传的是图片,然后我没有在form表单上面设置enctype="multipart/form-data",这会导致什么呢?
其实如果不设置这个也是可以上传文件的,但是只能够上传文本文件,这个参数的作用就是将上传的东西弄成二进制进行上传,这样上传的类型就不会只有文本了
好比说我上传的图片,为什么会出现input呢?可能就是因为我上传的图片跟我后面action定义的file参数类型不匹配所导致的了,也就是上面所说的第一种情况
呜呜呜呜呜,,
整死我了,下次再也不会犯这样的错了,还好我遇到了这种情况,不然下次那不哭死
整合spring之后,struts2里面的自定义拦截器的invocation.invoke()总是返回input的更多相关文章
- 在struts2中配置自定义拦截器放行多个方法
源码: 自定义的拦截器类: //自定义拦截器类:LoginInterceptor ; package com.java.action.interceptor; import javax.servlet ...
- struts2框架之自定义拦截器和配置
struts框架中也存在拦截器,只不过系统自动调用.框架自带的拦截器的配置文件所在的位置为: java Resources--->Libraries--->struts2-core-2.3 ...
- Struts2中一个自定义拦截器的使用
1.自定义的拦截器的类: package it.web.interceptor; import com.opensymphony.xwork2.ActionContext; import com.op ...
- struts2学习(6)自定义拦截器-登录验证拦截器
需求:对登录进行验证,用户名cy 密码123456才能登录进去: 登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...
- Struts2第七篇【介绍拦截器、自定义拦截器、执行流程、应用】
什么是拦截器 拦截器Interceptor-..拦截器是Struts的概念,它与过滤器是类似的-可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Struts为 ...
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...
- JavaWeb -- Struts 自定义拦截器, 登录权限拦截
1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...
- struts2自定义拦截器与cookie整合实现用户免重复登入
目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用struts2做了个简单的struts2拦截器,涉及到了与cookie整合,具体的看代码 结构(两部份)=struts2.xml+自定义拦截器 ...
- Struts2自定义拦截器处理全局异常
今天在整理之前的项目的时候想着有的action层没有做异常处理,于是想着自定义拦截器处理一下未拦截的异常. 代码: package cn.xm.exam.action.safeHat; import ...
随机推荐
- Linux-2.1vim简单使用
1.用vim打开文件,文件内容显示在终端,命令模式无法编辑 vim 1.txt vi 1.txt 2.使用a,i,o,shift+o编辑文件,按Esc退出编辑模式 i 插入在光标前 a 插入在光标后 ...
- Linux-1.1root初始密码设置,切换root用户
Ubuntu安装好后,root密码需要自己设置 root初始密码设置 sudo passwd root 权限不够时,切换root su 回车后输入密码 exit 退出登录的账户
- API 网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd
前几天拜读了 OpsGenie 公司(一家致力于 Dev & Ops 的公司)的资深工程师 Turgay Çelik 博士写的一篇文章(链接在文末),文中介绍了他们最初也是采用 Nginx 作 ...
- ArrayList扩容分析
一段java代码 String e = "q3234v"; List<String> list = new ArrayList<String>(); for ...
- |、&、||、&&、^符号含义
|和&为计算机中二进制之间的位运算 在计算机中二进制的0表示false,1表示true. |为位运算中的或运算:它的运算逻辑为一真则真,全假则假 &为位运算中的并运算:它的运算逻辑为一 ...
- 配置Linux静态IP地址
- Delphi 处理异常情况
- Delphi Timer组件
- 初识linux内核漏洞利用
0x00 简介 之前只接触过应用层的漏洞利用, 这次第一次接触到内核层次的,小结一下. 0x01 概况 这次接触到的,是吾爱破解挑战赛里的一个题,给了一个有问题的驱动程序,要求在ubuntu 14.0 ...
- Lomsat gelral CodeForces - 600E (树上启发式合并)
You are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour. Let's cal ...