action的动态调用<s:a action="login!redirect.action">redirect</s:a>无法成功,报404错误的原因

LoginAction.java 的内容:

package com.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
	private static final long serialVersionUID = 1L;
	//重载execute()方法,返回SUCCESS
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
	//redirect()方法,返回ERROR
	public String redirect() throws Exception {
		System.out.println("进入redirect方法!");//用来测试jsp跳转过程中是否进入到此方法
		return ERROR;
	}
}

index.jsp 的核心代码

<body>
    	<s:a action="login">login</s:a><br/>
	<s:a action="login!redirect.action">redirect</s:a>
	 <!-- Action的动态调用都用“!”隔开 -->
</body>

。。。。。。

struts中没打开DMI,即不支持动态调用,根本进入不了redirect()方法中,所以会有404错误。
只需要在配置文件struts.xml中(在struts标签之间加上如下代码):

<struts>
	 <!-- 设置struts允许动态调用 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
  ...
</struts>

学习于:https://bbs.csdn.net/topics/391812506

posted @ 2020-03-30 23:36  OldSocks  阅读(415)  评论(0)    收藏  举报