Eğer karşı karşıya olduğu sorun nedeniyle bahar yorumlama son uri kısmını sonra nokta (.) Bir şekilde dosya uzantısı .json veya .xml gibi. Bahar yol değişkenini çözmeye çalıştığında, uri'nin sonunda bir nokta (.) İle karşılaştıktan sonra verilerin geri kalanını keser.
Not: bu sadece yol değişkenini uri'nin sonunda tutarsanız olur.
Örneğin uri: https: //localhost/example/gallery.df/link.ar
@RestController
public class CustomController {
@GetMapping("/example/{firstValue}/{secondValue}")
public void example(@PathVariable("firstValue") String firstValue,
@PathVariable("secondValue") String secondValue) {
// ...
}
}
Yukarıdaki url'de firstValue = "gallery.df" ve secondValue = "link",. path değişkeni yorumlandığında kesilir.
Bu nedenle, bunu önlemek için iki olası yol vardır:
1.) Normal ifade eşlemesi kullanma
Eşlemenin son bölümünde normal ifade kullanın
@GetMapping("/example/{firstValue}/{secondValue:.+}")
public void example(
@PathVariable("firstValue") String firstValue,
@PathVariable("secondValue") String secondValue) {
//...
}
+ İşaretini kullanarak, nokta da yol değişkeninin bir parçası olacağından sonraki herhangi bir değeri belirtiriz.
2.) @PathVariable'ımızın sonuna eğik çizgi ekleme
@GetMapping("/example/{firstValue}/{secondValue}/")
public void example(
@PathVariable("firstValue") String firstValue,
@PathVariable("secondValue") String secondValue) {
//...
}
Bu, onu Spring'in varsayılan davranışından koruyan ikinci değişkenimizi kapsayacaktır.
3) Spring'in varsayılan webmvc yapılandırmasını geçersiz kılarak
Spring, @EnableWebMvc ek açıklamaları kullanılarak içe aktarılan varsayılan yapılandırmaları geçersiz kılmanın yollarını sunar . Spring MVC yapılandırmasını uygulama bağlamında kendi DefaultAnnotationHandlerMapping fasulyemizi bildirip useDefaultSuffixPattern özelliğini false olarak ayarlayarak özelleştirebiliriz . Misal:
@Configuration
public class CustomWebConfiguration extends WebMvcConfigurationSupport {
@Bean
public RequestMappingHandlerMapping
requestMappingHandlerMapping() {
RequestMappingHandlerMapping handlerMapping
= super.requestMappingHandlerMapping();
handlerMapping.setUseSuffixPatternMatch(false);
return handlerMapping;
}
}
Bu varsayılan yapılandırmayı geçersiz kılmanın tüm URL'leri etkilediğini unutmayın.
Not: Burada WebMvcConfigurationSupport sınıfını varsayılan yöntemleri geçersiz kılmak üzere genişletiyoruz. WebMvcConfigurer arabirimini uygulayarak hata yapılandırmalarını geçersiz kılmanın bir yolu daha vardır. Bu okuma hakkında daha fazla bilgi için: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/EnableWebMvc.html