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
本文介绍如何在Struts框架中配置用户登录验证,并解决添加表单验证后出现的异常问题。通过在XML配置文件中添加result标签,实现登录成功、失败及输入验证的处理。
222

被折叠的 条评论
为什么被折叠?



