3.3 springmvc-異常システム基本使用


ここ数日、いくつかの基本的な添削機能を完成していますが、正直に言うと、これはstruts 2よりずっと煩わしいですね.struts 2にはvalidate機能があり、契約モードを使用して、validateXXX(ここでXXXは方法名)で、XXXを実行する前に実行します.これはpre-checkに等しく、いくつかのパラメータの初期化能力を果たすことができます.
 
残念ながらspringmvcには@initbinderが1つしかありません.彼はグローバル関数のようにWebDataBinderにバインドされています.しかし、initbinderの関数をトリガーするには、私のrequestMappingメソッドパラメータにentityタイプを追加する必要があります.
 
そういえば、このspringmvcは基本的に異常を2つに分けることができます.
 
  • のクラスは、try catchブロックでユーザ自身が定義
  • である.
    はい、このようなspringはその時に良い解決方法を提供しました.それは
    /**
    	 *   id   
    	 * @param bindingResult
    	 * @param defaultPage
    	 * @return
    	 */
    	@ExceptionHandler(ObjectNotFoundException.class)
    	public ModelAndView handleNotFoundEx(BindingResult bindingResult, String defaultPage) {
    		if(bindingResult == null) return handleErrors(defaultPage);
    		return handleErrors(bindingResult, defaultPage);
    	}

     
    @ExceptionHandlerこれはいいですね.具体的なspringが持っているpdfには説明がありますが、残念ながら、彼は支持できません.
    @ExceptionHandler({xxx.class,xxx.class})
  • クラスはspringに内蔵された
  • です.
    例えば@PathVariable Long idを使用する場合、idがlongに変換できない場合はtypemisというspring内蔵exceptionが投げ出されます.これは本当に早くてあなたのcontrollerに入っていないときに発生しました.このとき、彼はxxx-servletを呼び出しました.xmlファイルで定義されたexception handlerで処理します.
    <!-- Mapping exception to the handler view -->
        <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        	<!-- to /commons/error.jsp -->  
    		<property name="defaultErrorView" value="/commons/error"/>
            <property name="exceptionMappings">
                <props>
                </props>
            </property>
        </bean>

    ここの
    ExceptionMappingsは、異なるexceptionに対応して処理することができます.でも具体的なコードはまだよく見ていないので、springが持っているのも詳しく書いていないようです.
    自分で研究するしかない.ほほほ