Struts文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
</package>
<package name="users" namespace="/users" extends="default">
<!-- <action name="*_*" class="com.joey.action.{1}Action" method="{2}"> -->
<action name="Users_login" class="com.joey.action.UsersAction" method="login">
<result name="login_success">Users_login_success.jsp</result>
<result name="login_failure">Users_login.jsp</result>
</action>
<action name="Users_logout" class="com.joey.action.UsersAction" method="logout">
<result name="logout_success">Users_login.jsp</result>
</action>
</package>
</struts>
package com.joey.action;
import com.joey.entity.Users;
import com.joey.service.UsersDAO;
import com.joey.service.impl.UsersDAOImpl;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.interceptor.validation.SkipValidation;
public class UsersAction extends SuperAction implements ModelDriven<Users>{
private static Logger logger = LogManager.getLogger(UsersDAOImpl.class.getName());
private Users user=new Users();
/**
* 用戶登錄
* @return
*/
public String login(){
logger.info("正在登錄");
UsersDAO usersDAO=new UsersDAOImpl();
if (usersDAO.usersLogin(user)){
// 在session中保存成功登陸的用戶名
session.setAttribute("loginUserName", user.getUsername());
return "login_success";
}else {
return "login_failure";
}
}
/**
* 用戶註銷
* @return
*/
@SkipValidation//跳過驗證
public String logout() {
logger.info("正在註銷");
if(session.getAttribute("loginUserName")!=null) {
session.removeAttribute("loginUserName");
}
return "logout_success";
}
/**
* 表單驗證
*/
@Override
public void validate() {
// 用戶名驗證
if("".equals(user.getUsername().trim())) {
this.addFieldError("usernameError", "用戶名不能爲空!!");
}
// 密碼長度驗證
if(user.getPassword().length()<6) {
this.addFieldError("usernameError", "密碼長度不少與6");
}
}
@Override
public Users getModel() {
return this.user;
}
}
在覆蓋validate方法之前可以正常登錄,但是添加了表單驗證後就報錯
[13:24:01:440] [ERROR] - org.apache.struts2.dispatcher.Dispatcher.logConfigurationException(Dispatcher.java:590) - Could not find action or result: /student/users/Users_login.action
com.opensymphony.xwork2.config.ConfigurationException: No result defined for action com.joey.action.UsersAction and result input
我的解決方法是爲登錄的action添加一個result標籤:
<action name="Users_login" class="com.joey.action.UsersAction" method="login">
<result name="login_success">Users_login_success.jsp</result>
<result name="login_failure">Users_login.jsp</result>
<result name="input">Users_login.jsp</result>
</action>
OK啦!!這是答案來源:https://stackoverflow.com/questions/5742281/no-result-defined-for-action-and-result-input