Como incluir e passar o id do registro incluido na mesma action?

2 respostas
G

Tenho que cadastrar o veículo em 2 passos (2 formulários)!
O primeiro o veiculo em si!
O segundo os combustíveis, opcionais e fotos deste veículo!

Estou conseguindo incluir este veiculo!
Mas não consigo mandar o id do veiculo para apresentar no próximo formulário!

Quero fazer isso na mesma action que adiciona o veículo! Ou seja adicionar e e apresentar!

Alguém pode me dizer como eu faço isso? Ou outra solução?

Aqui está meu formulário:

<html:form action="/incluiVeiculo" focus="veiculo.idmarcas">
	.   
	.
	. 
	 <c:set var="id" value="${idmarcas.idmarcas}"/>

	 <html:select property="veiculo.idmarcas" onchange="teste(this.value)" value="${id}">
	 	<html:option value="0"> - Selecione - </html:option>
	 	<c:forEach var="marca" items="${listamarca}"> 
			<html:option value="${marca.id}">${marca.marca}</html:option>
	 	</c:forEach>
	 </html:select> 
	.
	.
	.

	<html:submit>Incluir</html:submit>
</html:form>

E aqui a minha Action:

public class InserirVeiculoAction extends Action{

	@Override
	public ActionForward execute(ActionMapping map, ActionForm form, 
			                     HttpServletRequest request, 
			                     HttpServletResponse response) throws Exception {
		VeiculoForm formulario = (VeiculoForm)form;
		Veiculo veiculo = formulario.getVeiculo();
		VeiculoDAO dao = new VeiculoDAO();
		String menssagem;
		if(dao.veiculoExiste(veiculo)){
			menssagem = "Veiculo já cadastrado com a placa:" + veiculo.getPlaca() + "!";
			request.setAttribute("menssagem", menssagem);
			return map.findForward("erro");
		}
		dao.incluir(veiculo);
		menssagem = "veiculo";
		request.setAttribute("menssagem", menssagem);
		System.out.println("\n\nid do veiculo = " + veiculo.getId());
		return map.findForward("ok");
	}
}

Se alguém poder me dar uma ajuda!

2 Respostas

G

Mandei a action errada! A certa é esta aqui:

@Override
	public ActionForward execute(ActionMapping map, ActionForm form, 
			                     HttpServletRequest request, 
			                     HttpServletResponse response) throws Exception {
		VeiculoForm formulario = (VeiculoForm)form;
		Veiculo veiculo = formulario.getVeiculo();
		VeiculoDAO dao = new VeiculoDAO();
		String menssagem;
		if(dao.veiculoExiste(veiculo)){
			menssagem = "Veiculo já cadastrado com a placa:" + veiculo.getPlaca() + "!";
			request.setAttribute("menssagem", menssagem);
			return map.findForward("erro");
		}
		dao.incluir(veiculo);
		menssagem = "veiculo";
		request.setAttribute("menssagem", menssagem);
		System.out.println("\n\nid do veiculo = " + veiculo.getId());
		List<Veiculo> lista = new VeiculoDAO().carregarListar(veiculo);
		request.setAttribute("carregaveiculo", lista);
		return map.findForward("ok");
	}
D

Ae gustavo,

Vou mencionar duas maneiras de você fazer isso. A 1° é utilizando SEQUENCE(no banco de dados). Antes de você fazer a inclusão no banco, você terá que obter um n° id a partir da utilização dela(SEQUENCE) e logo após isso, você efetua o cadastramento(repare que antes mesmo de você cadastrar, você já terá o id do veículo) do veículo e logo em seguida, você faz o cadastro dos itens para o mesmo baseado no id obtido pela SEQUENCE. A 2° forma é preciso que você faça um select no banco para obter o id do veículo(após cadastrar o veículo), para que posteriormente, você venha fazer o cadastramento dos itens do veículo(com o id obtido no select).

Obs.: Aconselho fazer da 1° forma.

Criado 1 de março de 2007
Ultima resposta 19 de jul. de 2008
Respostas 2
Participantes 2