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 ファイル) に WebConfigAdapter をインポートします。

@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 モック 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