MultiActionControllerを構成する2つの方法

1993 ワード


<bean id="paramResolver"
		class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName">
			<value>method</value>
		</property>
	</bean>


方法1:OutlineActionはMultiActionControllerを継承し、属性を調製する必要はありません.
MultiActionControllerは、オブジェクトを構築する際に、次のような操作を行うためです.

public MultiActionController() {
                this.delegate = this;
                registerHandlerMethods(this.delegate);
                // We'll accept no handler methods found here - a delegate might be set later on.
        }

         <bean name="outlineAction"   class="com.mdd.web.springMvc.crawl.OutlineAction">   
    <property name="methodNameResolver"><ref bean="paramResolver"/></property>      
    </bean>

方法2:OutlineActionがMultiActionControllerを継承していない

  <bean name="outlineActionDelegate" class="com.mdd.web.springMvc.crawl.OutlineAction"></bean>
    <bean name="outlineAction"   class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">
    <property name="delegate"><ref bean="outlineActionDelegate"/></property>
    <property name="methodNameResolver"><ref bean="paramResolver"/></property>      
    </bean> 

注意OutlineActionのフォーマットは次のとおりです.
public ModelAndView queryOutlineByUser(HttpServletRequest request, HttpServletResponse response){}
またpublicでなければなりません.反射呼び出しを否定するとロードできません.
エラーが表示されますIllegalStateException:No handler methods in class[ClassName]