Tenho um formulário JSP com um checkbox. Porém o id de cada item do checkbox deve ser armazenado em linhas diferente da tabela do meu banco. Então, se eu marcar 15 itens desse checkbox, deve ser gerada 15 linhas no banco para armazenar esses id’s. Gostaria de saber como faço isso.
Se estiver recebendo os dados num servlet, pode usar o método getParameterValues que retorna uma string com o valor de todos os parâmetros que foram passados. No seu caso, seu formulário (suponho que isto esteja dentro de um formulário) já está correto. Todos os valores (os ids) para o servidor com o mesmo nome: intermediaria.inteFkServicoDimatId.smatPkId. Então é só você pegá-los e fazer o que precisa:
@Post@Path("/intermediariaServicosDimat/adiciona")String[]ids=request.getParameterValues("intermediaria.inteFkServicoDimatId.smatPkId");for(Stringid:ids){// Faz o que você precisa aqui publicvoidadicionaServicosDimat(Intermediariaintermediaria)throwsException{validator.addAll(Hibernate.validate(intermediaria));validator.onErrorUse(page()).of(IntermediariaDimatController.class).formulario();dao.salva(intermediaria);result.redirectTo(SolicitacaoController.class).servicosDimat();}}
Olá visola. Estou usando VRaptor. Queria saber se onde tem “Faz o que precisa aqui” seria o método (acima) para salvar que está implementado na controller. Segue o link da img do formulário para vc ter uma idéia de como é.
Este teste cadastra no banco valores pre-estabelecidos, preciso pegar esses valores do form, como eu faço isso !?
*importbr.com.catequese.to.Solicitacao;importjava.util.Date;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.AnnotationConfiguration;publicclassteste{privatestaticSessionFactoryfactory;privatestaticSessionsession;publicstaticvoidmain(String[]args)throwsException{// abri uma sessão hibernatesession=factory.openSession();//inicia uma transaçãoTransactiontx=session.beginTransaction();//instancia a solicitaçãoSolicitacaoa=newSolicitacao();a.setSoliPkId(1);a.setSoliDataSolicitacao(newDate());a.setSoliDataFinalizacao(newDate());a.setSoliDataDesativacao(newDate());a.setSoliMotivoCancelamento("wdaw");a.setSoliDataContato(newDate());a.setSoliDataAtendimento(newDate());a.setSoliNegociacao("aqwdd");a.setSoliStatus("A");a.setSoliStatusSolicitacaoNome("adw");a.setSoliStatusSolicitacaoCod("adw");a.setSoliStatusSolicitacaoLocal("adw");session.save(a);System.out.printf("=====================salvou o satanas================================2");tx.commit();}static{AnnotationConfigurationcfg=newAnnotationConfiguration();cfg.configure();factory=cfg.buildSessionFactory();}publicSessiongetSession(){returnfactory.openSession();}}
visola
Bom, nunca usei o VRaptor então não vou poder te ajudar com isso.
O que está errado é a declaração do método dentro do for. Você tem que declará-lo fora do método do controller.
Não entendi direito o que o seu código faz. Você está usando o validador do Hibernate, é isso?
Você precisa da entidade inteira para salvar no banco. Então, antes de salvar, vai ter que carregá-la (usando o load do seu DAO por exemplo) através do ID que recebeu.
Se você está colocando os dados num entidade que será salva no banco (suponho que seja esta “intermediaria”), você precisa carregar cada um dos “serviços” e adicionar nela. Depois validar e salvar.
Então, acho que o melhor é você criar a entidade intermediaria antes do for, carregar e adicionar os serviços dentro do for e executar o seu método que valida e salva depois do for.
Espero que isso tenha ajudado.
J
JonRocha
Ah entendi, obrigado pela ajuda. Estou mesmo usando o validador do hibernate e minha entidade é a Intermediária também.
O que eu fiz foi utilizar na view a propriedade varStatus do foreach, onde no nome do checkbox coloco intermediariaList[] passando assim uma lista para o controller, onde nele e so iterar a mesma e persistir.
Ve se funciona…Ja passei pelo mesmo problema…
Abs.
J
JonRocha
rcnweb…
Cara, você acertou na mosca. Funcionou perfeitamente aqui. Pense na alegria rsrs
Obrigado!!
R
rcnweb
JonRocha…
Po de nada.
Tive a mesma alegria quando me responderam…rsrs
[]'s
juniorsatanas
Por isso que eu AMO O GUJ… DÚVIDA DE 1UNS e DÚVIDA DE VÁRIOS 1UNS !