5

コントローラー メソッドを呼び出す前に、次の要求のファイル拡張子 (.jpg) が削除されている理由がわかりません。

GET http://blah.com/assets/picture.jpg

パス拡張を優先しないようにコンテンツ ネゴシエーションを設定しました。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.blah" })
public class PlatformWebAppConfig extends WebMvcConfigurerAdapter {    

    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {    
        configurer.favorPathExtension(false);
        configurer.favorParameter(false);
        configurer.useJaf(false);
        configurer.defaultContentType(MediaType.APPLICATION_JSON);
    }
}

私のコントローラーはこれです:

@Controller
public class FileUploadRestApi {
    @RequestMapping(
        value = "/assets/{filename}",
        method = RequestMethod.GET)
    public void downloadFile(HttpServletResponse response,
        @PathVariable("filename") String filename,
        Principal principal) {
            // ERROR: 'filename' has extension stripped !!!!
    }
}

PlatformWebAppConfigまた、上記のクラスに以下を追加しようとしましたが、うまくいきませんでした:

@Override
public void configurePathMatch(PathMatchConfigurer matcher) {
    matcher.setUseSuffixPatternMatch(true);
    matcher.setUseRegisteredSuffixPatternMatch(true);
}

私は問題をデバッグしようとしましたが、設定が false であり、コンテンツ ネゴシエーション戦略が設定されていないことContentNegotiationManagerFactoryBean.afterPropertiesSetは間違いありません (予想どおり)。favorPathExtension

アップデート:

リクエストのマッピングを

"/assets/{filename:.+}"

ファイル名には拡張子が含まれますが、これは、これらすべての構成ツールを設定しても何も達成されなかった理由を説明していません????

4

0 に答える 0