Oi Guilherme, obrigado pelo retorno, acredito que vocês estejam com muita demanda, tranquilo...
Seguinte, acima de tudo, eu pergunto essas coisas porque não tenho certeza se a forma que eu estou resolvendo aos problemas é a mais adequada. Trabalho sozinho e dou meu jeito, mas nunca sei é é a melhor forma, por isso também eu assino a Alura, para ter opiniões de outros profissionais e fazer parte de uma comunidade de desenvolvedores.
Eu resolvi a questão da seguinte forma, é bem parecida com o que você propôs, veja se é adequada.
No meu formulário, após carregar o registro eu mostrei os dados de forma estática e deixei um textArea e um option para serem usados. Esses dois campos mais o id do registro (que coloquei num hidden) são enviados para o controller que faz o resto do serviço, veja bem, é uma forma simples de resolução que eu sempre uso nas linguagens que já trabalhei, a dúvida mesmo era se essa forma e trabalhar era correta ou se o Spring tinha algo melhor.
Segue o código do form:
<form action="${s:mvcUrl('OC#atualizaosobs').arg(0, id).arg(1, estado).arg(2, obs).build()}" method="post">
<div class="form-group">
<label class="col-sm-2 control-label">Chamado número</label>
<p class="form-control-static">${os.id }<input type="hidden" name="id" value="${os.id }"/></p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Data de abertura</label>
<p class="form-control-static">${os.dataAbertura}</p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Solicitante</label>
<p class="form-control-static">${os.solicitante}</p>
</td>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Categoria</label>
<p class="form-control-static">${os.categoria}</p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Solicitação</label>
<p class="form-control-static">${os.solicitacao}</p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Estado atual</label>
<p class="form-control-static">${os.estado}</p>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Selecione um novo estado</label>
<select name="estado" class="form-control">
<option value="ACEITO">ACEITO</option>
<option value="AGUARDANDO">AGUARDANDO</option>
<option value="ANDAMENTO">ANDAMENTO</option>
<option value="CANCELADO">CANCELADO</option>
<option value="FINALIZADO">FINALIZADO</option>
</select>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Observações cadastradas</label>
</div>
<div class="form-group">
<ul class="list-group">
<c:forEach items="${os.observacoes}" var="observacao" varStatus="index">
<li class="list-group-item">${observacao.dataobs} - ${observacao.obs}</li>
</c:forEach>
</ul>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Adicione uma observação</label>
<textarea name="obs" class="form-control"></textarea>
</div>
<div class="form-group">
<button class="btn btn-primary">Gravar</button>
</div>
</form>
Segue o trecho do controller:
@RequestMapping("/atualizaosobs/{id}/{estado}/{obs}")
public ModelAndView atualizaosobs(Long id, String estado, String obs) {
OS os=dao.os(id);
os.setEstado(estado);
Observacao observacao=new Observacao();
observacao.setObs(obs);
observacao.setDataobs(LocalDate.now());
os.getObservacoes().add(observacao);
dao.gravar(os);
return osAbertas();
}
O que você achou? É por ai ou "gambiarrei demais"?
Abraço e agradeço o retorno!