2012-11-27 24 views
8

私は<mvc:annotation-driven/>を使用しています。useTrailingSlashMatchを無効にするためにRequestMappingHandlerMappingを設定したいと思います。別のRequestMappingHandlerMappingを宣言すると、私は2 RequestMappingHandlerMappingになります。 RequestMappingHandlerMappingを設定するにはどうすればよいですか?カスタマイズスプリング3 mvc:RequestMappingHandlerMappingの注釈

答えて

9

すでに述べたように、これはmvc:annotation-drivenを取り除き、全体のxml同等で置き換えることにより、XMLで実現可能であるオーバーライドするためにJavaの設定を試すことができます:

<bean name="handlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
    <property name="webBindingInitializer"> 
     <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> 
      <property name="conversionService" ref="conversionService"></property> 
      <property name="validator"> 
       <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/> 
      </property> 
     </bean> 
    </property> 
    <property name="messageConverters"> 
     <list> 
      <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> 
      <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/> 
      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 
      <bean class="org.springframework.http.converter.StringHttpMessageConverter"></bean> 
      <bean class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean> 
      <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean> 
      <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"></bean> 
     </list> 
    </property> 
</bean> 

<bean name="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
    <property name="useTrailingSlashMatch" value="true"></property> 
</bean> 
+0

これは機能しますが、この重複は良くありません – scarba05

+3

Spring 3.2ではもう動作しません – ALOToverflow

0

useTrailingSlashMatchフィールドを切り替えるには、スプリング構成ファイルに以下を追加します。

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
    <property name="useTrailingSlashMatch" value="true"> 
    </property> 
</bean> 
+4

私はすでにこれを試しています。 'mvc:annotation-driven'が別のRequestMappingHandlerMappingを作成しています。私は私の質問にそれを述べました。 – Cemo

1

あなたはRequestMappingHandlerMapping

@Configuration 
@ComponentScan(basePackages = "base.package.name") 
public class WebAppConfig extends WebMvcConfigurationSupport { 

    @Override 
    @Bean 
    public RequestMappingHandlerMapping requestMappingHandlerMapping() { 
     RequestMappingHandlerMapping rmh = super.requestMappingHandlerMapping(); 
     rmh.setUseTrailingSlashMatch(false); 
     return rmh; 
    } 
} 
+1

私はすでにxml構成全体をプログラム的なJava 1に置き換えることで解決しました。しかし私はまた、私を助けなかったこのものを試しました。 – Cemo

+0

さて、Javaの設定がうまくいきました。良い。時間がある場合は、あなたの決断の詳細を追加して投稿を更新してください。これは今後の視聴者のための頭を提供します:) – jeevatkm

+1

実際には、私は同じ意図を持っています。しかし、私の解決策は質問の答えではありません。実際のソリューションはXML構成に基づいている必要があります。 – Cemo

1

Springで機能が重複しないソリューションが必要な場合は、DisplatcherServletをオーバーライドできます。サーブレット3.0コンテナでこれは次のようになります:

+0

私はこの記事に関するブログ投稿を書いています。http://www.scarba05.co.uk/blog/2013/03/configure-the-default - 手作業によるスプリングによる駆動 - 3-2 / – scarba05