2

私は奇妙な問題に直面しています。これは私の REST API マッピングです

@RequestMapping(
    value = { "/{email}" },
    method = RequestMethod.GET,
    params = "time")
public void getEmail(
    @PathVariable("email") final String sender,
    @RequestParam(value = "time", required = true) final long time) 

このようにAPIを呼び出すと

/someone@someone.com?time=10

の代わりにがsender含まれていることがわかります。someone@someonesomeone@someone.com

こうやってあげると

@RequestMapping(
    value = { "/{email:.+}" },
    method = RequestMethod.GET,
    params = "time")
public void getEmail(
    @PathVariable("email") final String sender,
    @RequestParam(value = "time", required = true) final long time) 

406 エラーが発生します。

私もこれを試しました。

<bean
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    <property name="useSuffixPatternMatch" value="false" />
</bean>

まだ助けはありません。私は何を間違っていますか?

4

1 に答える 1

0

RequestMappingJavaDocからの抜粋:

URI テンプレート値 (つまり、/hotels/{hotel}) にアクセスするための @PathVariable 注釈付きパラメーター (サーブレットのみ)。変数の値は、宣言されたメソッドの引数の型に変換されます。デフォルトでは、URI テンプレートは正規表現 [^.]* (ピリオド以外の任意の文字) と一致しますが、これは /hotels/{hotel:\d+} のように別の正規表現を指定することで変更できます。さらに、 @PathVariable を Map で使用して、すべての URI テンプレート変数にアクセスできます。

2 番目のマッピング定義は正しく、機能します。おそらく正しくテストしていません。

于 2014-06-13T09:09:22.327 に答える