No result defined for action action.LoginAction and result success 50

我是菜鸟,现在想学struts2。我在myEclipse8.0中建了一个struts2的工程,该工程功能很简单,就是实现了用户登陆,结果老是报错:Noresultdefi... 我是菜鸟,现在想学struts2。我在myEclipse8.0中建了一个struts2的工程,该工程功能很简单,就是实现了用户登陆,结果老是报错:No result defined for action action.LoginAction and result success。代码如下:
struts.xml中的配置是这样的:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>
<package name="struts2" extends="struts-default">
<action name="login" class="action.LoginAction">
<result name="success">/login.jsp</result>
<result name="error">/login.jsp</result>
</action>
</package>
</struts>

LoginAction.java中的代码如下:
package action;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String username;
private String password;

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void validate(){
if(getUsername().equals("")||getUsername().equals(null)){
this.addFieldError("username","aaaa");
}
}
public String execute()throws Exception{
System.out.println("aa");
if(this.username.equals("admin")&&this.password.equals("admin"))
return SUCCESS;
else
return ERROR;
}
}

login.jsp中的代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'login.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<s:form action="login.action" method="post">
<s:textfield name="username" label="username"></s:textfield>
<s:textfield name="password" label="password"></s:textfield>
<s:submit value="login"></s:submit>
</s:form>
</body>
</html>

我通过设置断点测试发现,程序执行了LoginAction中的execute()方法,但是执行到return SUCCESS时就报错。各位大侠帮帮忙吧,谢谢了啊。
success没有在struts配置文件里配置过吧,forward 如何配置?
SUCCESS 是常量还是啥? SUCCESS类似于常量吧,它是指跳转到 <resultname="success">/login.jsp</result> 这条语句去执行。现在的问题是,这条语句没有被执行,请求高手给解释一下啊!!

还是很感谢5楼的兄台,这些方法我都试过了,你说的我也都懂,可惜的是还是不行。我用的是MyEclipse8.0,直接用内置的Struts2.1,不清楚是为什么。
展开
 我来答
walkingz
推荐于2017-05-17 · TA获得超过351个赞
知道答主
回答量:32
采纳率:0%
帮助的人:32.8万
展开全部
String 里面有5个static 常量分别是:
ERROR INPUT LOGIN NONE SUCCESS
例如 如果在excute 中返回的是 ruturn SUCCESS;
也就相当于返回的是return "success"字符串
就必须在struts.xml中写上对应的"success"
<result name="success">/x.jsp</result>

当然EORROR 对应的就是"error";字符串
当然INPUT 对应的就是"input";字符串
当然LOGIN 对应的就是"login";字符串
当然NONE 对应的就是"none";字符串

要不你就换一换把return SUCCESS换成return "success";试一试
一定要确定你在excute返回的字符串在 struts.xml中有定义

还有一个要提醒你的就是:
在validate中验证有错误的话且没有指定return 字符串的话,
struts2默认就返回的是 return INPUT 也就是return "input"
匿名用户
2012-06-22
展开全部
<action name="login" class="action.LoginAction">
这行配置错误应该写成
<action name="login" class="LoginAction.action">
代码错误
public String execute()throws Exception{
if(this.username.equals("admin")&&this.password.equals("admin"))
return SUCCESS;
else
return ERROR;
应该写成
public String execute()throws Exception{
if(getUsername().equals("admin")&&getPassword.equals("admin"))
return SUCCESS;
else
return ERROR;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jpsbbt
2012-04-05 · TA获得超过1549个赞
知道小有建树答主
回答量:1060
采纳率:100%
帮助的人:541万
展开全部
<action name="login" class="action.LoginAction">
中的 login 换个其它名称试试;我也遇到了类似问题,改了名字就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悉鸿祯0Gm55f
2012-05-11 · TA获得超过187个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:59.5万
展开全部
在package里面增加 namespace="/" 告诉系统是从根本录寻找...正解!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
回首难求曾经
2010-01-27 · TA获得超过169个赞
知道答主
回答量:93
采纳率:0%
帮助的人:97.3万
展开全部
你的配置文件里面可能有不明物体。。大家不要笑 很多时候是这样的。。把配置删除 重新按照原来的手动写一次,问题就解决了。。这种情况真的很抓狂!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式