1

リクエストマッパーを使用して、次のような URL に一致させようとしています。

http://localhost:9999/si/configs/some/path/on/the/server/file.xml

このようにコントローラーをセットアップしましたRequestMappingが、findConfigメソッドの値が正しくありません。これが私のコードです(無関係なものはすべて削除されています):

@Controller
@RequestMapping("/si/configs")
public class SIController {

    @RequestMapping(value = "{path:/**/*.xml}", method = RequestMethod.GET)
    public ResponseEntity<String> findConfig(@PathVariable("path") String path) {
        // value of path arg should be: "/some/path/on/the/server/file.xml"
   }
}

Spring では、パスに一致する文字列に正規表現を使用できることを知っています。この質問のアドバイスに従おうとしました: Spring URI Template Patterns with Regular Expressionsですが、これを正しく取得できないようです。

リクエスト マッピングには何を入れる必要がありますか?


編集

パス変数を削除してこれを使用すると:

    @RequestMapping(value = "/**/*.xml", method = RequestMethod.GET)
    public ResponseEntity<String> findConfig() {
    }

コントローラー メソッドが期待どおりに呼び出されます。そのため、春が好まない野生のクラッドとパス変数を一致させようとすることには何かがあります。

4

1 に答える 1

1

HttpServletRequest 直接使用についてはどうですか?

@RequestMapping(value = "/**/*.xml", method = RequestMethod.GET)
public ResponseEntity<String> findConfig(HttpServletRequest request) {
    String path = request.getServletPath()/getRequestURL()/getPathInfo()
    //I forget which one could give the correct part, maybe some parse operation needed

}

于 2013-07-27T10:51:51.167 に答える