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 {

Это работает

Другие вопросы по тегам