Olá estou com dificuldade no vraptor com a seguinte situação:
Eu tenho um formulário que salva no banco uma SubAtividade.
mas nessa sub atividade eu tenho que dizer qual é a atividade a qual ela esta relacionada (ManyToOne )
e tambem qual documento esta relacionado(ManyToOne )
agora como fazer para que eu possa retornar essa atividade e documentação ?
eu tentei fazer direto e ele me da essa excessão:
O que faço ?
Pelo o que eu entendi, faça algo assim no seu formulário:
<input type="text" name="list[0].atividade" />
<input type="text" name="list[0].documento" />
Mostre suas classes para ajudar a gente…
Esta assim:
SubAtividade Model
@Id
@GeneratedValue
private Long id;
@ManyToOne
private Atividades ativ;
private String descricao;
private Boolean industria;
private Boolean taxa;
private String valor;
private Boolean resp;
@ManyToOne
private Documentacao doc = new Documentacao();
private String status;
//getts n setts
SubAtividade Controller
[code]@Restrito
public void novaSubAtividade() {
List list = new ArrayList();
DocumentacaoDao dd = new DocumentacaoDao();
list = dd.listaTudo();
this.result.include(“documentacao”, list);
List lista = new ArrayList();
AtividadesDao ad = new AtividadesDao();
lista = ad.listaTudo();
this.result.include(“atividades”, lista);
}
@Restrito
@Post("/subAtividade")
public void adicionaAtividade(Subatividade subatividade,Atividades atividade, Documentacao doc) {
if (subatividade.getDescricao() == null) {
validator.add(new ValidationMessage(
“Descrição não pode ficar em branco”,
“subatividade.descricao”));
}
if (dao.existeSubAtividade(subatividade)) {
validator.add(new ValidationMessage(
“Essa Atividade ja foi cadastrada.”,
“subatividade.descricao”));
}
validator.onErrorForwardTo(SubatividadeController.class)
.novaSubAtividade();
dao.salva(subatividade);
result.redirectTo(SubatividadeController.class).lista();
}
[/code]
E o JSP
[code]<form id=“subAtividadeForm” class=“container well"
action=”<c:url value="/subAtividade"/>" method=“POST”>
<h3>Sub Atividade</h3>
<fieldset class="container">
<!-- Primeira Linha -->
<div class="row"
onload="desabilitaCampo(document.getElementById('taxa'));">
<div class="span9">
<label for="atividade">Atividade</label> <select id="atividade"
name="subatividade.ativ">
<c:forEach items="${atividades}" var="atividades">
<option value="${atividades.id }">${atividades.descricao
}</option>
</c:forEach>
</select>
</div>
</div>
<!-- Segunda Linha -->
<div class="row">
<div class="span9">
<label for="descricao">Descricão</label> <input type="text"
class="span6" id="descricao" name="subatividade.descricao"
placeholder="Descrição" MAXLENGTH=50
value="${subatividade.descricao}">
</div>
</div>
<!-- Terceira Linha -->
<div class="row">
<div class="span9">
<div class="row">
<div class="span2">
<label class="checkbox"> <input type="checkbox"
class="span1" id="industria" name="subatividade.industria"
value="${subatividade.industria }"> Indústria
</label>
</div>
<div class="span2">
<label class="checkbox"> <input type="checkbox"
class="span1" id="resp" name="subatividade.resp"
value="${subatividade.resp }"> Resp. Técnico
</label>
</div>
</div>
</div>
</div>
<!-- Quarta Linha -->
<div class="row">
<div class="span9">
<div class="row">
<div class="span2">
<label class="checkbox"> <input type="checkbox"
class="span1" id="taxa" name="subatividade.taxa"
value="${subatividade.taxa }"
onClick="desabilitaCampo(document.getElementById('taxa'));">
Taxa
</label>
</div>
<div class="span4" id="valordiv" style="display: none;">
<label for="valor">Valor: <input type="text"
class="span2" id="valor" name="subatividade.valor"
placeholder="Valor" MAXLENGTH=50 value="${subatividade.valor}">
</label>
</div>
</div>
</div>
</div>
<!-- Quarta Linha -->
<div class="row">
<div class="span9">
<div class="row">
<div class="span2">
<label class="checkbox"> <input type="checkbox"
class="span1" id="status" name="subatividade.status"
value="${subatividade.status }"> Ativo
</label>
</div>
</div>
</div>
</div>
<!-- Quinta Linha -->
<div class="row">
<div class="span9">
<div class="row">
<div class="span3">
<label for="doc">Documentos</label> <select id="doc"
name="subatividade.docs">
<c:forEach items="${documentacao}" var="documentacao">
<option value="${documentacao.id }">${documentacao.descricao
}</option>
</c:forEach>
</select>
</div>
</div>
</div>
</div>
<!-- Button Bar -->
<div class="row-fluid">
<div class="span9" align="center">
<button type="submit" class="btn btn-success">Salvar</button>
<button type="reset" class="btn btn-primary">Novo</button>
<a type="button" class="btn btn-info" href="/webga/atividades/lista">Listar</a>
</div>
</div>
<!-- Erro Bar -->
<c:forEach var="error" items="${errors}">
<p style="color: red; font-weight: bold;">${error.message}</p>
</c:forEach>
</fieldset>
[/code]