问题描述
- action继承ActionSupport后action不能访问特定的方法是为什么
-
表单的action为:
《form action="login.action">《/form>
struts2.xml的配置为:
《action name="login" class="loginAction" method="userLogin"》
《result name="ok"》index.jsp《/result》
《result name="error"》login.jsp《/result》
《/action》
LoginAction的代码为:
public class LoginAction extends ActionSupport implements ServletRequestAware{
private static final long serialVersionUID = 1L;
private HttpServletRequest req;
private LoginServiceinter loginServiceImp;@Override public String execute() throws Exception { System.out.println("进入默认方法"); return "ok"; } public String userLogin(){ Users user = loginServiceImp.userLogin(req.getParameter("username"), req.getParameter("password")); if(user!=null){ req.getSession().setAttribute("userid", user.getUserId()); req.getSession().setAttribute("username", user.getUsername()); return "ok"; } return "error"; } @Override public void setServletRequest(HttpServletRequest arg0) { this.req = arg0; }
}
结果访问不到
HTTP Status 404 - No result defined for action com.zui2jun.action.LoginAction and result ok
控制台提示:
进入默认方法如果将form改成《form action="asdf.action"》
struts.xml改成
《action name="asdf" class="loginAction" method="asdf"》
《result name="ok">/index.jsp
《result name="error">/login.jsp</result》
《/action》
方法名改成
public String asdf(){
Users user = loginServiceImp.userLogin(req.getParameter("username"), req.getParameter("password"));
if(user!=null){
req.getSession().setAttribute("userid", user.getUserId());
req.getSession().setAttribute("username", user.getUsername());
return "ok";
}
return "error";
}
就可以正常访问 是为什么?
解决方案
有可能是缓存问题,你现在在改成原来试试估计也是可以的
解决方案二:
action类里面你先把其他东西删了,只留userLogin方法然后
《action name="login_*" class="包名+类名" method="{1}"》
《result name="ok"》index.jsp《/result》
《result name="error"》login.jsp《/result》
《/action》
重启
访问地址写../login_userLogin.action
解决方案三:
Action中方法的访问