struts2沒有打印日誌原因和No result defined for action XXXAction and result input

在項目中調用一個action的方法的時候發生了一個錯誤,但是在catalina.out和配置的log4j都沒有打印異常,後來在執行的action中加了logger.error("XXXXX"),也沒有打印異常。

後來發現是struts2默認的有異常攔截器ExceptionMappingInterceptor,但是是禁用的,需要自己啓用

                <interceptor-ref name="defaultStack">
                    <param name="exception.logEnabled">true</param>
                    <param name="exception.logLevel">ERROR</param>
                </interceptor-ref>

自定義全局異常處理的顯示的頁面

        <global-results>
            <result name="error">/public/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
        </global-exception-mappings>

在顯示的頁面/public/error.jsp也可以顯示發生的異常信息

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <div class="msgFalse" >
        <dl>
            <dt>操作失敗</dt>
        </dl>
        
        <s:property value="exception"/>
        <s:property value="exceptionStack"/>
    </div>
</body>
</html>

 

異常:No result defined for action XXXAction and result input

1.在action裏面定義了某類型的變量,然後想通過struts的自動填裝把post來的表單的數據轉換,如果轉換類型失敗就出現此種錯誤

2.頁面提交了同一個名字的參數多個

比如“”
username 123
username 123
permissions 123
info 31234
頁面提交了了兩個username ,而我的後臺卻只寫了一個String username,這樣同樣會出錯.

3.頁面中用到的控件名稱與後臺Action中的屬性名稱不一致

這個很好理解,名稱不匹配,Struts2是不會給Action中的屬性賦值的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章