2

我能在这里找到的唯一相关问题是这个

不幸的是,与上述问题不同,我没有使用文件名作为路径变量。我在一个字符串中发送的内容可能有也可能没有'.'。因此,我不想使用上述问题的解决方案中提到的策略。

这是我的 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/");
    }
}

我在我的 WebConfig(一个 java 文件)中导入 WebConfigAdapater,如下所示:

@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”。这也是我关于堆栈溢出的第一个问题,所以如果我遗漏了一些需要的信息或者可以以更好的方式更好地解释我的问题,请告诉我!谢谢您的帮助!

4

1 回答 1

2
@RequestMapping(value = "/{ip:.*}", method = RequestMethod.GET, produces = "application/json")
 @ResponseBody
 public Info lookup(@PathVariable("ip") String ip) throws Exception {

这有效

于 2018-11-29T21:09:34.660 回答