struts2一个action返回到另一个action的特定result
<actionname="admin"class=""><resultname=""></result><resultname=""></result><resultna...
<action name="admin" class="">
<result name=""></result>
<result name=""></result>
<result name=""></result>
</action>
<action name="detail" class="admin.DetailAction">
<result name="detail">这里怎么返回到admin的特定的一个方法(admin除默认方法外,还有几个方法)</result>
</action> 展开
<result name=""></result>
<result name=""></result>
<result name=""></result>
</action>
<action name="detail" class="admin.DetailAction">
<result name="detail">这里怎么返回到admin的特定的一个方法(admin除默认方法外,还有几个方法)</result>
</action> 展开
2个回答
2015-12-16 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
Struts2中从一个Action直接跳到另一个Action中,Struts提供了两种结果类型可以实现:chain、redirect。
我们从Servlet中学到重定向是不能保留参数的,也就是说重定向了,request对象就会无效了。同样redirect就像Servlet中的重定向,它也不能够保留request对象保存的参数。但是chain可以。所以两种的区别就在于chain能够保留request对象,而redirect不可以。
struts.xml的配置
<package name="mystruts1" extends="struts-default" namespace="/mystruts1">
<!-- 第一个Action -->
<action name="test_*" class="com.action.TestAction" method="{1}">
<result name="text_chain" type="chain">result_resultChain</result>
<result name="text_redirect" type="redirect">result_resultRedirect</result>
</action>
<!-- 第二个Action -->
<action name="result_*" class="com.action.ResultAction" method="{1}"></action>
</package>
public class TestAction {
public String testChain(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
request.setAttribute("param", "我是chain结果类型...");
return "text_chain";
}
public String testRedirect(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
request.setAttribute("param", "我是redirect结果类型...");
return "text_redirect";
}
}
public class ResultAction {
public String resultChain(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
System.out.println(request.getAttribute("param"));
return null;
}
public String resultRedirect(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
System.out.println(request.getAttribute("param"));
return null;
}
}
我们从Servlet中学到重定向是不能保留参数的,也就是说重定向了,request对象就会无效了。同样redirect就像Servlet中的重定向,它也不能够保留request对象保存的参数。但是chain可以。所以两种的区别就在于chain能够保留request对象,而redirect不可以。
struts.xml的配置
<package name="mystruts1" extends="struts-default" namespace="/mystruts1">
<!-- 第一个Action -->
<action name="test_*" class="com.action.TestAction" method="{1}">
<result name="text_chain" type="chain">result_resultChain</result>
<result name="text_redirect" type="redirect">result_resultRedirect</result>
</action>
<!-- 第二个Action -->
<action name="result_*" class="com.action.ResultAction" method="{1}"></action>
</package>
public class TestAction {
public String testChain(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
request.setAttribute("param", "我是chain结果类型...");
return "text_chain";
}
public String testRedirect(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
request.setAttribute("param", "我是redirect结果类型...");
return "text_redirect";
}
}
public class ResultAction {
public String resultChain(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
System.out.println(request.getAttribute("param"));
return null;
}
public String resultRedirect(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
System.out.println(request.getAttribute("param"));
return null;
}
}
展开全部
一般是一个方法对应一个action name.用method属性表示每个方法的名字,然后前面的action name 起不同的名字。举个例子:
<action name="A" class="admin.UserAction" method="方法名1">
<result>....</result>
</action>
<action name="B" class="admin.UserAction" method="方法名2">
<result>....</result>
</action>
这就是你说的“admin除默认方法外,还有几个方法”,将那几个方法都这么配置。
然后
<action name="detail" class="admin.DetailAction">
<result type="redirect">/B.action</result>
</action>
这里是转到了方法名2里,根据不同的方法名选择不同的action name 进行配置,如果还有配置文件中还有package名,前面还需要假如package名。
<result type="redirect">/包名/B.action</result>
<action name="A" class="admin.UserAction" method="方法名1">
<result>....</result>
</action>
<action name="B" class="admin.UserAction" method="方法名2">
<result>....</result>
</action>
这就是你说的“admin除默认方法外,还有几个方法”,将那几个方法都这么配置。
然后
<action name="detail" class="admin.DetailAction">
<result type="redirect">/B.action</result>
</action>
这里是转到了方法名2里,根据不同的方法名选择不同的action name 进行配置,如果还有配置文件中还有package名,前面还需要假如package名。
<result type="redirect">/包名/B.action</result>
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询