普通网友 2015-04-12 15:21 采纳率: 0%
浏览 2444

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条回答 默认 最新

  • bluefatter 2015-04-12 15:35
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮