struts 2 velocity異常処理フロー
一般的なstruts 2異常処理フローは
1.action放出の異常
2.actionはerrorを返す
この2つの例外について、messageファイルで同じ定義の例外を使用して、プログラムで例外符号化を返します.プロセスは次のとおりです.
1.異常属性ファイルXXXXを定義.properties
2.strutsを定義する.xml. プロパティファイルの参照、グローバル例外の定義
3.定義properties
4.error.の作成vm
5.macroを作成する.vm(showSimpleError()メソッド参照)
6.
a.actionで異常が投げ出された場合、strutsは異常をキャプチャし、error.にジャンプする.vmには、対応するコンテンツが表示されます
b.actionがerrorを返す場合:
最後にページ表示でマクロメソッドを呼び出す
これでstruts 2統合velocityの異常処理プロセスは終了します.肝心なのはやはり異常の定義、およびプログラム中の異常処理の方法です.各チームには独自のプロセスがあります.ここでは議論しません.次の例では、興味のある方はダウンロードしてみてください.jarパッケージは主にstruts 2とvelocityです.
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です.