0

spring-web を使用して、ドット "." を含むリクエストを受信するメソッドをマッピングしています。パス上:

@RequestMapping(value = "download/{id:.+}", method = RequestMethod.GET, produces = "application/xls")
public String download(@PathVariable(value = "id") String id) { ... }

たとえば/download/file.xls、有効な住所である必要があります。しかし、そのアドレスにアクセスしようとすると、Spring はCould not find acceptable representationという名前のリソースを見つけようとしているかのように戻りますfile.xls

Spring はdownload、パス変数として名前が付けられたリソースを見つけようとするのではなく、メソッドを実行すべきではありませんか?

Obs .: 私のアプリケーションはスプリング ブート アプリケーションです。

4

2 に答える 2

0

RequestMappingHandlerMapping を構成しようとしましたか

handler.setUseSuffixPatternMatch( false )

(とにかく RequestMappingHandlerMapping を構成していたので、その行を追加するだけで済みました-Spring Bootにそのクラスを自動構成させている可能性があります)。

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.html#setUseRegisteredSuffixPatternMatch-boolean-を参照してください。

おそらく、コンテンツ ネゴシエーションもオフにする必要があるかもしれません。Spring Boot のデフォルトのコンテンツ ネゴシエーションが何であるか正確には思い出せませんが、ケースに影響している可能性があります。

@Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.favorPathExtension(false)
}

より広い/既存のアプリケーションで作業している場合、これらの構成は両方ともより広範囲に影響を与える可能性があることに注意してください。その場合は、慎重に検討してください!

于 2016-03-08T21:30:56.530 に答える