1
resposta

Classe AppWebConfiguration para Spring Boot

Olá,

Estou tentando replicar o projeto do Curso Spring MVC I: Criando aplicações web para um projeto Spring Boot. Na aula 11 há código abaixo:

@Bean
public InternalResourceViewResolver internalResourceViewResolver(){
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");
    resolver.setExposedContextBeanNames("carrinhoCompras");
    return resolver;
}

Eu consegui configurar o setPrefix e setSuffix no application.properties. Porém o setExposedContextBeanNames("carrinhoCompras") não consegui configurar.

Há um jeito Spring Boot para disponibilizar o método do classe @Component para o view no JSP?

O método se encontra no classe abaixo:

@Component
public class CarrinhoCompras {

    private Map<CarrinhoItem, Integer> itens = new LinkedHashMap<CarrinhoItem, Integer>();

    public void add(CarrinhoItem item) {
        itens.put(item, getQuantidade(item) + 1);

    }

    private int getQuantidade(CarrinhoItem item) {
        if(!itens.containsKey(item)) {
            itens.put(item, 0);
        }
        return itens.get(item);
    }

    public int getQuantidade(){
        System.out.println("Quantidade dos itens no carrinho");
        return itens.values().stream().reduce(0, (proximo, acumulador) -> (proximo + acumulador));
    }

}

Preciso disponibilizar a quantidade de itens no carrinho através de getQuantidade() no detalhe.jsp

<li><a href="/carrinho" rel="nofollow">Seu Carrinho (${carrinhoCompras.quantidade})</a></li>
1 resposta

Oi Rafael,

Diretamente não é possível export os campos do @Component, você teria que utilizar um @Controller.

Dá uma olhada nessa aula, vai te ajudar: https://cursos.alura.com.br/course/spring-mvc-1-criando-aplicacoes-web/task/40418