Olá pessoal, já quebrei a cabeça varias vezes e não consigo implementar uma edição de dados no sistema, com base nas aulas fiz um projeto minimo para aprendizado, mas não consigo entender como altear. Segue projeto:
Classe controle no pacote "br.com.contato":
@Controller
public class PessoaController {
@Autowired
private PessoaService service;
@RequestMapping("/")
private String index() {
return "index";
}
@RequestMapping("listarpessoas")
private String listarPessoas(Model model) {
Iterable<Pessoa> pessoas = service.obterTodos();
model.addAttribute("pessoas", pessoas);
return "listarpessoas";
}
@RequestMapping("incluirpessoa")
public String incluirPessoa() {
return "incluirpessoa";
}
@RequestMapping(value="salvar", method = RequestMethod.POST)
public String salvar(@RequestParam("nome") String nome, Model model) {
Pessoa novaPessoa = new Pessoa(nome);
//Como foi usado a anotação "autowired" não é necessário instanciar o serviço.
service.salvar(novaPessoa);
Iterable<Pessoa> pessoas = service.obterTodos();
model.addAttribute("pessoas", pessoas);
return"listarpessoas";
}
@RequestMapping("editarpessoa/{id}")
public String editarpessoa(@PathVariable("id") Long id, Pessoa pessoa, Model model) {
System.out.println(id);
model.addAttribute("pessoa", pessoa);
service.obterId(id);
service.salvar(pessoa);
return "listarpessoas";
}
}
Classe repositório no pacote - "br.com.contato.repository":
@org.springframework.stereotype.Repository
public interface PessoaRepository extends CrudRepository<Pessoa, Long>{
List<Pessoa> findByNome(String nome);
Optional<Pessoa> findById(Long id);
}
Classe service no pacote - "br.com.contato.service":
@Service
public class PessoaService {
@Autowired
private PessoaRepository repository;
public Iterable<Pessoa> obterTodos(){
Iterable<Pessoa> pessoas = repository.findAll();
return pessoas;
}
public Optional<Pessoa> obterId(Long id) {
return repository.findById(id);
}
public void salvar(Pessoa pessoa) {
repository.save(pessoa);
}
}
Classe de entidade no pacote - "br.com.contato.model":
@Entity
public class Pessoa {
public Pessoa() {
// TODO Auto-generated constructor stub
}
public Pessoa(String nome) {
this.nome = nome;
}
@Id
@GeneratedValue
private Long id;
private String nome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Templates na pasta - "resources/templates": listarpessoas.html:
<title>Contatos xXx</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"></link>
</head>
<body>
<div class="container">
<div id=listarpessoas>
<div>
<div class="jumbotron" align="center" style="margin-top: 50px;">
<h1>xXx Contatos (lista) xXx</h1>
<table class="table table-hover">
<thead>
<tr>
<th>Identificação</th>
<th>Nome</th>
<th>Ações</th>
</tr>
</thead>
<tr th:each="pessoa:${pessoas}">
<td><span th:text="${pessoa.id}"></span></td>
<td><span th:text="${pessoa.nome}"></span></td>
<td><a href="editarpessoa">Editar</a></td>
</tr>
</table>
</div>
</div>
</div>
<div align="center">
<a href="incluirpessoa" class="btn btn-primary">Incluir Contato</a>
<a href="/" id="cancel" class="btn btn-default">Cancel</a>
</div>
</div>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
Templates na pasta - "resources/templates":
editarpessoas.html:
<body>
<div class="container">
<div id="incluirpessoa">
<h1>Alterar Pessoa</h1>
<div align="left">
<form action="salvar" method="post">
<div class="form-group">
<label for="id" >identificação</label>
<input type="text"
class="form-control" id="id" name="id" placeholder="id" value="${pessoa.id}" />
</div>
<div class="form-group">
<label for="nome" >Nome completo</label>
<input type="text"
class="form-control" id="nome" name="nome" placeholder="Nome" value="${pessoa.nome}"/>
</div>
<div align="right">
<button type="submit" class="btn btn-success">Alterar</button>
<a href="listarpessoas" id="cancel" class="btn btn-default">Cancel</a>
</div>
</form>
</div>
</div>
</div>
Preciso de um direcionamento no que fazer. :(