Spring mock mvc сохранить расширение файла
Единственный важный вопрос, который я мог найти здесь, это этот.
К сожалению, в отличие от вышеупомянутого вопроса, я не использую имена файлов в качестве переменной пути. То, что я посылаю в строке, которая может иметь или не иметь ".". В результате я не хочу использовать стратегию, упомянутую в решении для вышеуказанного вопроса.
Это мой WebConfigAdapter:
@Configuration
public class WebConfigAdapter extends WebMvcConfigurerAdapter {
@Autowired
HandlerExceptionResolver exceptionHandler;
/**
* Disable content negotiation for path extensions.
*
* @param configurer
*/
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
/**
* Set the exception handler.
*
* @param exceptionResolvers
*/
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
super.configureHandlerExceptionResolvers(exceptionResolvers);
exceptionResolvers.add(exceptionHandler);
}
/**
* Serve static resources.
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
Я импортирую WebConfigAdapater в мой WebConfig (файл Java) следующим образом:
@Configuration
@EnableWebMvc
@Import(value = { WebConfigAdapter.class, WebConfigSupport.class })
public class WebConfig {
@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Bean
public HandlerExceptionResolver exceptionHandler() {
return new ExceptionHandler();
}
}
И в моем контексте приложения XML:
<bean class="com.quova.platform.portal.config.WebConfig"/>
Я до сих пор не могу понять, когда я использую Spring mock mvc в своих модульных тестах, почему приведенный ниже контроллер получает строку ввода, которую он удаляет из символов после последнего периода в строке, включая период.
@RequestMapping(value = "/{ip}", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public Info lookup(@PathVariable("ip") String ip) throws Exception {
Вот как я вызываю вышеуказанную конечную точку в моем модульном тесте:
String ip = "4.3.2";
mockMvc.perform(get("/secure/resources/iplookup/{ip}", ip)).andExpect(status().isBadRequest());
Теперь контроллер видит "4.3". Кроме того, это мой первый вопрос о переполнении стека, поэтому дайте мне знать, если мне не хватает какой-либо необходимой информации или я могу лучше объяснить мой вопрос! Спасибо за помощь!
1 ответ
@RequestMapping(value = "/{ip:.*}", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public Info lookup(@PathVariable("ip") String ip) throws Exception {
Это работает