[Resolvido]Tem como retornar + de um objeto para o controller?

2 respostas
G

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 ?

2 Respostas

Rafael_Guerreiro

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…

G

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

@Restrito
	public void novaSubAtividade() {
		List<Documentacao> list = new ArrayList<Documentacao>();
		DocumentacaoDao dd = new DocumentacaoDao();
		list = dd.listaTudo();
		this.result.include("documentacao", list);
		List<Atividades> lista = new ArrayList<Atividades>();
		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();
	}

E o JSP

<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:&nbsp;&nbsp; <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>
</form>


<script src="<c:url value="/javascripts/jquery.js"/>"></script>
<script src="<c:url value="/javascripts/scripts.js"/>"></script>
Criado 13 de dezembro de 2012
Ultima resposta 14 de dez. de 2012
Respostas 2
Participantes 2