struts 2 velocity異常処理フロー


一般的なstruts 2異常処理フローは
1.action放出の異常
2.actionはerrorを返す
この2つの例外について、messageファイルで同じ定義の例外を使用して、プログラムで例外符号化を返します.プロセスは次のとおりです.
1.異常属性ファイルXXXXを定義.properties
 
shop.shopaction.error.editshopinfo =           ,    !

shop.vendershopaction.exist.error=     

shop.vendershopaction.banner.error=banner         

shop.vendershopaction.logo.error=logo         

shop.vendershopaction.venderorshop.error=        

 
2.strutsを定義する.xml. プロパティファイルの参照、グローバル例外の定義
 
<constant name="struts.custom.i18n.resources" value="message/message"/>

 
 
         <global-results>
            <result name="exception">/WEB-INF/vm/error.vm</result>
            <result name="error">/WEB-INF/vm/error.vm</result>
        </global-results>
	<global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="exception"/>
        </global-exception-mappings>

 3.定義properties
 
 
tools.view.servlet.layout.directory=/WEB-INF/vm/layout/
tools.view.servlet.error.template=/WEB-INF/vm/error.vm
tools.view.servlet.layout.default.template=default.vm
velocimacro.library=/WEB-INF/vm/macro.vm
input.encoding=gbk
output.encoding=gbk
runtime.log.logsystem.class=org.springframework.ui.velocity.CommonsLoggingLogSystem

 
 
4.error.の作成vm
 
#* @vtlvariable name="exception" type="java.lang.Exception" *#
#* @vtlvariable name="result" type="com.jd.common.web.result.Result" *#
#if($exception)
    #if($!exception.class.simpleName=="NoSuchMethodException")
        $!response.setStatus(404)
        404!          
    #else
           :  $exception.message
    #end
#elseif($result)
    #if($result.resultCode)
        #showSimpleError()    
    #else
            
    #end
#end
 
 
 
5.macroを作成する.vm(showSimpleError()メソッド参照)
 
 
#* @vtlvariable name="module" type="com.jd.common.web.url.JdUrl" *#
#* @vtlvariable name="page" type="com.jd.common.util.base.PaginatedArrayList" *#


#macro(showSimpleError)
    #if(!$!actionErrors.empty)
        #foreach($str in $actionErrors)
            $!str
            #break
        #end
    #end
#end

 
 
 
6.
a.actionで異常が投げ出された場合、strutsは異常をキャプチャし、error.にジャンプする.vmには、対応するコンテンツが表示されます
b.actionがerrorを返す場合:
 
String text = getText("shop.shopaction.error.editshopinfo");//          ,    !

 addActionError(text);

最後にページ表示でマクロメソッドを呼び出す
#showSimpleError()

 
これでstruts 2統合velocityの異常処理プロセスは終了します.肝心なのはやはり異常の定義、およびプログラム中の異常処理の方法です.各チームには独自のプロセスがあります.ここでは議論しません.次の例では、興味のある方はダウンロードしてみてください.jarパッケージは主にstruts 2とvelocityです.