问题描述
我的struts.xml配置如下<!--?xml version="1.0" encoding="UTF-8" ?--> <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="forum" namespace="/mok/forum" extends="default"><!-- 拦截器,暂时没什么用,这里先放着,到时候有需要的可以自己配 --><interceptors><interceptor name="myInterceptor" class="com.interceptor.MyInterceptor"></interceptor></interceptors><action name="login" class="loginAction" method="login"><result name="wrong" type="redirectAction">index</result><result name="success" type="redirectAction">index</result></action><action name="loginOnly" class="loginAction" method="loginOnly"><result name="success">/mok/forum/login.jsp</result></action><action name="register" class="registerAction" method="register"><result name="success">/mok/forum/login.jsp</result><result name="wrong">/mok/forum/register.jsp</result></action><action name="toRegister" class="registerAction" method="toRegister"><result name="success">/mok/forum/register.jsp</result></action><action name="index" method="index" class="forumAction"><result name="success">/mok/forum/index.jsp</result></action><action name="logout" method="logout" class="forumAction"><result name="success" type="redirectAction">index</result></action><action name="boardPostList" class="forumAction" method="boardPostList"><result name="success" >/mok/forum/spec_topics.jsp</result></action><action name="viewPost" class="forumAction" method="viewPost"><result name="success">/mok/forum/topic.jsp</result></action><action name="reply" class="replyAction" method="reply"><result name="success" type="redirectAction">viewPost?postId=${#request.postId}</result></action><action name="newPost" class="postAction" method="newPost"><result name="success">/mok/forum/post.jsp</result></action><action name="addNewPost" class="postAction" method="addNewPost"><result name="success" type="redirectAction">boardPostList?boardId=${#request.boardId}</result><result name="wrong" type="redirectAction">newPost</result></action><action name="showEditPost" class="postAction" method="showEditPost"> <result name="success">/mok/forum/editPost.jsp</result></action><action name="editPost" class="postAction" method="editPost"> <result name="success" type="redirectAction">boardPostList?boardId=${#request.boardId}</result></action><action name="deletePost" class="postAction" method="deletePost"> <result name="success" type="redirectAction">boardPostList?boardId=${#request.boardId}</result></action><action name="showAprioriTable" class="forumAprioriAction" method="showAprioriTable"> <result name="success">/mok/forum/details.jsp</result></action></package></struts> 出问题的action是addNewPost,deletePost,showEditPost,等等。。。比如请求了addNewPost之后,再次请求addNewPost,deletePost,showEditPost页面就出现如下错误:这个是什么问题?已经困扰我很久了,马上要答辩了,急啊。。。
解决方案
不知道你的spring action bean 是不是prototype的?
解决方案二:
strust2.x默认是多实例(prototype),每个请求都会产生相应的action实例去处理,但是spring整合后 就由spring管理bean 默认是单例模式,Action继承actionSupport会校验数据,如果转换出错,会找你要input视图,没配就出错找不到,.! ,如果继续访问该action还是会报错。因为是单例,上次的错误异常还在,因为没有清除,所以继续出错返回inpput,可以给action加上@Scope("prototype") 注解,不用单例
解决方案三:
访问action出错了,返回的逻辑地址为input action中没有配置input
解决方案四:
引用但是我要把boardId参数传过去的啊。。不然那边拿不到还是要报错的改为正常的请求参数自动映射到action变量的方式不行么。为什么非要选择这种传递方式呢?感觉后期应该很难维护啊。
解决方案五:
是因为你跳转了之后,页面跑到另一个目录下面去了,所以你再点提交的时候,报404错误,你会发现你的action地址已经变了,你再看看你的提交的地址就会发现这个错误
解决方案六:
执行addNewPost,deletePost,showEditPost后台没报错么?
解决方案七:
可能和action配置有关系,生命周期好短。。。。或者是上一次改变了result的值?应该不太会
解决方案八:
postId
解决方案九:
错误信息已经提示明显了,对于postaction没有定义的result。把你的项目发上来,帮你调试一下。
解决方案十:
可能是用了postId=${#request.postId}的原因。为什么用这种方式呢?参数不是都映射到action的属性吗,在action里面取属性不行吗