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 ?
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 ?
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() {
}
}
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