2011-09-13 18 views
3

私はGoogleとstackoverflowでこれに対する答えを探しましたが、残念ながら、Spring MVCやJavaに関する事前の知識はほとんどなく、アノテーションの大文字と小文字を区別しません。Spring MVCの大文字と小文字を区別しないURL

私は自分の問題にこれらの解決策を適応させる方法がわからないので、それに関するこの新しい質問の理由。

私がしたいことは簡単です。 が、私はそれでXMLの次のブロックでdispatcher-servlet.xmlファイルがあります:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <props> 
       <prop key="*.htm">pageController</prop> 
       <prop key="*.html">pageController</prop> 
       <prop key="/cms/*">pageController</prop> 
       <prop key="/admin/*">adminController</prop> 
      </props> 
     </property> 
    </bean> 

は、私が /cms/*/admin/*キーは大文字と小文字を区別しませんが、JavaやSpring MVCの両方に新しいものにしたいと、私はどのように理解していません私はこれをすることに行くべきです。

たとえば、誰かが/CMS/または/Cms/と入力したとしても、pageControllerを使用したいのですが、現時点では404ページしか表示されません。

希望の結果を得るために何をする必要があるのか​​誰にでも私に正確に説明できますか?

ご協力いただければ幸いです!

編集:Rupokの答えを1として

私はAntPathMatcherを拡張するクラスを追加しました。

私は残念なことに、この「SimpleUrlHandlerMapping」にこれを設定する方法はわかりません。

誰かが正しい方向に向けることができますか?

+0

のように私の新しいマッチャーをプラグインするために必要なorg.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMappingを使用していますので、 = "urlMapping" class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> pageController PageControllerで<キー=小道具" * "> PageControllerで<支えるキー=" /管理/ * "> adminController<プロパティ名=" pathMatcher "><プロパティ名= "alwaysUseFullPath" value = "true" /> – Rupok

答えて

5

SimpleUrlHandlerMappingのデフォルトのマッチングメカニズムは、AntPathMatcherです。独自のPathMatcher実装を作成することも、AntPathMatcherをサブクラス化してSimpleUrlHandlerMappingに設定することもできます。

PathMatcherインターフェイスは実装するのがかなり簡単です。

public class CaseInsensitiveAntPathMatcher extends AntPathMatcher { 

@Override 
public boolean match(String pattern, String string) { 
    return super.match(pattern.toLowerCase(), string.toLowerCase()); // make this according to your need 
} 

}

+0

答えていただきありがとうございます。 もう少し理解し始めましたが、これをSimpleUrlHandlerMappingでどのように設定するのですか? –

+0

<豆ID = "urlMapping" クラス= "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <プロパティ名= "マッピング"> <=キー小道具 "*。htmファイル"> PageControllerで <=キーを支える "*。htmlの"> PageControllerで <キー=小道具 "/ CMSを/ *"> PageControllerで <支えるキー= "/管理/ *"> adminController <プロパティ名= "pathMatcher"> <プロパティ名= "alwaysUseFullPath" value = "true" /> Rupok

0

Rupokの答えは私が右方向に始まったが、私は少しはそれが仕事を得るための実装を変更する必要がありました。

public class CaseInsensitiveAntPathMatcher extends AntPathMatcher { 
    @Override 
    protected boolean doMatch(String pattern, String path, boolean fullMatch, Map<String, String> uriTemplateVariables) { 
     return super.doMatch(pattern.toLowerCase(), path.toLowerCase(), fullMatch, uriTemplateVariables); 
    } 
} 

一致(文字列、文字列)とdoMatch(文字列、文字列、ブール値、マップ)に、他のメソッドのデリゲートを切断。また

、私は私はあなたのディスパッチャ-servlet.xml <豆のIDでこの

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="order" value="0" /> 
    <property name="pathMatcher"> 
     <bean class="youpackage.CaseInsensitiveAntPathMatcher" /> 
    </property> 
</bean> 
関連する問題