3

フォームの URL http://host/10.39284/LKJF283/23332/dd(パスは常に 10. で始まり、残りはドット、スラッシュ、文字、および数字の組み合わせになります) を照合し、10. の後にあるもの全体を PathVariable に格納します。

私は次のような正規表現でこれを行うことができると考えていました:

@RequestMapping(value="/{key:10\.+}", method=RequestMethod.GET)
    public String summary(@PathVariable String key, Model model) {
}

しかし、これにより「無効なエスケープシーケンス」というエラーが表示されます。どうすればこれを達成できますか?

4

1 に答える 1

6

これが私がそれを機能させた方法です。私が知る限り、Spring は URL 内のパス区切り文字ではないスラッシュを処理できません。そのため、代わりにhttp://www.tuckey.org/urlrewrite/にある URL 書き換えフィルターを使用します。

web.xml で有効にしました

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

次に、これを WEB-INF/urlrewrite.xml に追加しました

<urlrewrite>
    <rule>
       <from>^/(10\..*)$</from>
       <to>/keysummary?key=$1</to>
    </rule>
</urlrewrite>

そして、私のコントローラーをそのように書きました

@RequestMapping(value="/keysummary", method=RequestMethod.GET)
public String DOISummary(@RequestParam("key") String key, Model model) {
}
于 2012-09-21T14:40:59.800 に答える