Проблема с кодом состояния Spring 406 для .com как pathvar

У меня есть следующий метод контроллера:

@RequestMapping(method = RequestMethod.GET, value = "/account/{loginId:.+}")
    public @ResponseBody CloudWebServiceResponse getLogin(@PathVariable(value = "loginId") String loginId) throws CloudWebServiceInvocationException {
        return internalService.getLogin(progressId);
    }

Когда передается loginId как «abc.com», он дает код состояния 406, в противном случае он работает отлично.

У меня есть следующий файл WebConfig:

@Configuration
@Import(HibernateConfig.class)
@EnableWebMvc
// @EnableAsync()
// @EnableAspectJAutoProxy
@ComponentScan(basePackages = "com.azim.web.service.*",  basePackageClasses = { WebSecurityConfig.class }, excludeFilters = { @ComponentScan.Filter(Configuration.class) })
public class WebConfig extends WebMvcConfigurationSupport {

    @Override
    protected void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true).useJaf(false).defaultContentType(MediaType.APPLICATION_JSON)
                .mediaType("xml", MediaType.APPLICATION_XML).mediaType("json", MediaType.APPLICATION_JSON).mediaType("html", MediaType.APPLICATION_JSON);
    }

    @Bean(name = "validator")
    public Validator validator() {
        return new LocalValidatorFactoryBean();
    }
}

Он отправляет код состояния 406 только для .com, а не для .randomvalue. Я попытался добавить банки jackson-core-asl и jackson-databind-asl, предложенные другими потоками в stackoverdflow, но у меня ничего не работает. Пожалуйста, помогите разобраться в этом вопросе.


person Azim    schedule 28.04.2016    source источник
comment
Вы пытались зарегистрировать значение? идет правильно?   -  person Deendayal Garg    schedule 28.04.2016
comment
Да, это идет должным образом. При возврате ответа возникает эта проблема.   -  person Azim    schedule 28.04.2016


Ответы (1)


Наконец, я получил решение.

Вместо расширения до класса WebMvcConfigurationSupport он должен расширяться до WebMvcConfigurerAdapter. Тогда код становится:

@Конфигурация

@Import(HibernateConfig.class)
@EnableWebMvc
// @EnableAsync()
// @EnableAspectJAutoProxy
@ComponentScan(basePackages = "com.azim.web.service.*",  basePackageClasses = { WebSecurityConfig.class }, excludeFilters = { @ComponentScan.Filter(Configuration.class) })
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    protected void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false).favorParameter(true).parameterName("mediaType").ignoreAcceptHeader(true).useJaf(false).defaultContentType(MediaType.APPLICATION_JSON)
                .mediaType("xml", MediaType.APPLICATION_XML).mediaType("json", MediaType.APPLICATION_JSON).mediaType("html", MediaType.APPLICATION_JSON);
    }

    @Bean(name = "validator")
    public Validator validator() {
        return new LocalValidatorFactoryBean();
    }
}
person Azim    schedule 28.04.2016