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

Duvida, No caso da plicação de Lista de Convidados.

Temos somente uma entidade ( Convidado). A dúvida é: Caso estivesse N entidades, eu teria que criar vários Controller ? e como ficaria a anotação ?

5 respostas

Olá, Na verdade a quantidade de entidades não define a quantidade de controllers.

Temos controlles que podem usar mais de uma entidade. Imagine que tenhamos uma controller para tratarmos de Paciente e esse cliente tem um PlanoDeSaude.

Bem, nessa controller teríamos um método para carregarmos a página de cadastro de um novo Paciente.

Nesse caso, imagine que para a gravação dos dados do Paciente nos teríamos que escolher um PlanoDeSaude.

Então teríamos que enviar uma lista de planos que seriam exibidos em um DropDown para que o usuário escolhesse.

Portanto, uma controlles deve ter a responsabilidade de tratar de um tipo de objeto, mas para isso pode ser que ela precise de vários outros.

Entendi, mas a minha dúvida continua, como seria a anotação se eu estivesse outros Controller? +

Teria que dar um nome por anotação a cada Controller ?

Olá, Raimundo!

Sim! Para cada controlador da sua aplicação você deve colocar a anotação @Controller e da um nome para mapeamento. Exemplo:

@Controller
@RequestMapping("/clientes")
public class ClientesController {

    @GetMapping
    public String index() {
        return "clientes/index";
    }
}
@Controller
@RequestMapping("/fornecedores")
public class FornecedoresController {

    @GetMapping
    public String index() {
        return "clientes/index";
    }
}
@Controller
@RequestMapping("/produtos")
public class ProdutosController {

    @GetMapping
    public String index() {
        return "produtos/index";
    }

    @PostMapping("/salvar")
    public String salvar() {
    }
}
solução!

Quando você faz um sistema você terá várias controllers e então você terá que da um nome la em cima a ela.

Esses nomes servirão de base para as ROTAS (URLs). Vejamos:

Se você quer ter um CRUD de pacientes então você cria a controller de paciente.

@Controller
public class PacienteController {...}

Mas quando você começa a ter outras controllers você compeça a ter a necessidade de ensinar ao sistema a responder às requisições. Então quando cria a controller Conculta teria:

@Controller
public class PacienteController {
     @GetMapping
      public String index() {
          return "pacientes/index";
      }
}

@Controller
public class ConsultaController {
     @GetMapping
      public String index() {
          return "consultas/index";
      }
}

Mas isso causaria um conflito, pois o servidor não saberia responder a requisição.

Vejamos: o que seria retornado quando eu digitasse http://sistema/index ???

Pois é... o servidor ficaria sem saber o que responder.

Nesse caso, a gente tem que ensinar ele a responder e então damos nomes para serem usados nas rotas. Dessa forma:

@Controller
@RequestMapping("/pacientes")
public class PacienteController {
     @GetMapping("/index")
      public String index() {
          return "pacientes/index";
      }
}

@Controller
@RequestMapping("/consultas")
public class ConsultaController {
     @GetMapping("/index")
      public String index() {
          return "consultas/index";
      }
}

Agora sim... Para acessar a lista de pacientes eu teria que digitar: http://sistema/pacientes/index

e para acessar as consultas eu digitaria: http://sistema/consultas/index