Struts2项目中声明式异常捕捉 却显示No result defined for action

LoginForm.jsp

 <%@ page language="java" contentType="text/html; charset=utf-8"
  pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta content="Content-Type" content="text/html; charset=utf-8">
<title><s:text name="loginPage" /></title>
</head>
<body>
<s:form action="login" method="post">
    <s:textfield name="username" key="user"/>
    <s:textfield name="password" key="pass"/>
    <s:submit key="login"/>
</s:form>
<!-- 使用Struts2标签输出tip实例变量值 -->
<font color="red"><s:fielderror/></font>
</body>
</html>

LoginAction.java

 package com.test;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

    // 定义封装请求参数的username和password成员变量
    private String username;
    private String password;

    public String getUsername() {
        return this.username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return this.password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String execute() throws Exception {
        if (getUsername().equalsIgnoreCase("user")) {
            throw new MyException("自定义异常");
        }
        if (getUsername().equalsIgnoreCase("sql")) {
            throw new java.sql.SQLException("用户名不能为SQL");
        }
        if (getUsername().equals("2012") && getPassword().equals("123")) {
            addActionMessage("哈哈, 服务器提示!");
            return SUCCESS;
        }
        return ERROR;
    }
}

struts.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constant name="struts.custom.i18n.resources" value="mess" />
<!--    <constant name="struts.enable.DynamicMethodInvocation" value="false" />-->
<!--    <constant name="struts.devMode" value="true" />-->

    <package name="test" namespace="/0" extends="struts-default">
        <global-results>
            <result name="sql">/WEB-INF/exception.jsp</result>
            <result name="root">/WEB-INF/exception.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping result="sql" exception="java.sql.SQLException"/>
            <exception-mapping result="root" exception="java.lang.Exception"/>
        </global-exception-mappings>

        <action name="login" class="com.test.LoginAction">
            <exception-mapping result="my" exception="com.test.MyException"/>

            <!-- 定义三个逻辑视图和物理资源之间的映射 -->
            <result name="my">/WEB-INF/exception.jsp</result>
            <result name="error">/WEB-INF/error.jsp</result>
            <result name="success">/WEB-INF/welcome.jsp</result>
        </action>
        <action name="*">
            <result>/WEB-INF/{1}.jsp</result>
        </action>
    </package>

</struts>

exception.jsp

 <%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>异常处理页面</title>
</head>
<body>
    异常信息: <s:property value="exception.message"/>
</body>
</html>

图片说明
图片说明

应显示“自定义异常”,但却是No result defined

大家帮我看看

5个回答

给你的action类里面的抛出“自定义异常”后面加一句:return my;

u012934551
JackKea 不加“”也不行
5 年多之前 回复
u012934551
JackKea 回复u012934551: ![图片说明](http://img.ask.csdn.net/upload/201504/12/1428853391_268555.jpg)
5 年多之前 回复
u012934551
JackKea 回复u012934551: ![图片说明](http://img.ask.csdn.net/upload/201504/12/1428853391_268555.jpg)
5 年多之前 回复
u012934551
JackKea 不行啊
5 年多之前 回复

图片说明

你的ActionSupport类让我看看怎么写的

u012934551
JackKea 没有自己写ActionSupport类,直接导入的 com.opensymphony.xwork2.ActionSupport;
5 年多之前 回复

再线等大虾,Help。

u012934551
JackKea 没有人帮我吗? 求救!!
5 年多之前 回复

根据截图,提示的事没有定义input对应的result页面,只看到

        <!-- 定义三个逻辑视图和物理资源之间的映射 -->
        <result name="my">/WEB-INF/exception.jsp</result>
        <result name="error">/WEB-INF/error.jsp</result>
        <result name="success">/WEB-INF/welcome.jsp</result>
                    应该再加一个<result name="input">/login.jsp</result>
u012934551
JackKea 意外解决, 但我还是有疑惑 ,请看: http://bbs.csdn.net/topics/391016423?page=1#post-399099948
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐