Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre ViewResolvers Spring MVC

Como o método contentNegatiationViewResolver

@Bean 
public ViewResolver contentNegotiationViewResolver (ContentNegotiationManager manager) {

    List<ViewResolver> viewResolvers = new ArrayList<>();
    viewResolvers.add(internalResourceViewResolver());
    viewResolvers.add(new JsonViewResolver());

    ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
    resolver.setViewResolvers(viewResolvers);
    resolver.setContentNegotiationManager(manager);

    return resolver;
}

sabe qual resolver ele tem que escolher (O da VIEW ou o JSON), se a requisição é feita diretamente para o controller?

@RequestMapping("/detalhe/{id}")
    public ModelAndView detalhe (@PathVariable("id") Integer id) {
    ModelAndView modelAndView = new ModelAndView("produtos/detalhe");
    Produto produto = produtoDao.find(id);
    modelAndView.addObject("produto", produto);

    return modelAndView;
}

Isso é feito implicitamente pelo SPRING?

2 respostas
solução!

Na estrutura do Spring Web MVC, todos os controllers retornam uma instância ModelAndView, correto? As views no Spring são atreladas a um nome de exibição e são resolvidas por um resolver de view.

Se um resolver de view específico não resultar em uma view, o Spring irá inspecionar o contexto para ver se outros resolvers de view estão configurados. Se houver resolvers de view adicionais, ele continuará a inspecioná-los. Caso contrário, lançará uma exceção.

Espero ter ajudado,

Abraço!

Cara muito obrigado ✌️