Vraptor + For com Checkbox?

Pessoal Boa tarde !

Estou com um problema para salvar uma lista de checkbox usando um FOR !
segue DER :

Cliente cadastra uma solicitação, depois escolhe determinados serviços para essa solicitação :
https://lh6.googleusercontent.com/_nTzBoYSeT2I/TWPu_3Ib3gI/AAAAAAAAEVU/2IEAgMhPEaY/s1152/1solicitacao.png

Segue as classes e telas :

Solicitacao.Controller

        @Post @Path("/solicitacao/adiciona")
        public void adiciona(Solicitacao solicitacao) throws Exception{

            validator.addAll(Hibernate.validate(solicitacao));
            validator.onErrorUse(page()).of(SolicitacaoController.class).formulario();
            dao.salva(solicitacao);
            result.redirectTo(SolicitacaoController.class).formulario();
        }

Solicitacao.DAO

public void salva(Solicitacao solicitacao) { Transaction tx = session.beginTransaction(); solicitacao.setSoliStatus("Ativo"); solicitacao.setSoliDataAtendimento(new Date()); solicitacao.setSoliDataContato(new Date()); solicitacao.setSoliDataSolicitacao(new Date()); solicitacao.setSoliStatusSolicitacaoNome("CAC - ENTRADA NA SOLICITAÇÃO - 1"); session.save(solicitacao); tx.commit(); }

segue a tela para este cadastro :

https://lh5.googleusercontent.com/_nTzBoYSeT2I/TWPvAZVEMAI/AAAAAAAAEVc/IfB4d6y5hxM/s1152/solicitacao.png

Segue o codigo para cadastrar os serviços na tabela intermediaria :

[code]
@Post @Path("/intermediariaServicosDimat/adiciona")
public void adicionaServicosDimat(List<Intermediaria> intermediariaList) throws Exception{

                for(Intermediaria intermediaria : intermediariaList) {
                    validator.addAll(Hibernate.validate(intermediaria));
                    validator.onErrorUse(page()).of(IntermediariaDimeeController.class).formulario();
                    dao.salva(intermediaria);
                }
                result.redirectTo(SolicitacaoController.class).servicosDimat();
         
    }[/code]

https://lh3.googleusercontent.com/_nTzBoYSeT2I/TWPvADDbMCI/AAAAAAAAEVY/baG7HwUyo6Y/s1152/servicos.png

MINHA DÚVIDA É : como adicionar o código da solicitação no caso da foto valor (4), NESSE FOR !

     Quando eu cadastro ele gera varias tupulas, por causa do for, mas não leva o código da solicitação !

https://lh6.googleusercontent.com/_nTzBoYSeT2I/TWPysb7NwnI/AAAAAAAAEV4/ANACB7cvV_I/s1152/soli.png

vc tem como explicar o que vc precisa em, sei lá, 10 linhas e sem várias imagens?

Tenho sim Lucas !

     [code]
    @Post @Path("/intermediariaServicosDimat/adiciona")
    public void adicionaServicosDimat(List&lt;Intermediaria&gt; intermediariaList) throws Exception{

                for(Intermediaria intermediaria : intermediariaList) {
                    validator.addAll(Hibernate.validate(intermediaria));
                    validator.onErrorUse(page()).of(IntermediariaDimeeController.class).formulario();
                    dao.salva(intermediaria);
                   //Intermediaria.setInteCodigoSolicitacao("valor da seção ");
                }
                result.redirectTo(SolicitacaoController.class).servicosDimat();
         
    }[/code]

quero salvar a lista de valores e levar o codigo da solicitação !

Carrego uma lista de serviços 10 chebox, e o codigo da solicitação ! quero que tudo seja persistido na hora de salvar ! ele só salva os serviços !
como cada serviço e criado em uma TÚPULA ele não leva o código da solicitação !

ainda não entendi…

vc tem o codigo de solicitação mapeado na Intermediaria?

em intermediaria !

@Column(name = "inte_codigo_solicitacao") private Integer inteCodigoSolicitacao;

em solicitação

@OneToMany(mappedBy = "cljuFkSolicitacaoId") private Collection&lt;ClienteJuridica&gt; clienteJuridicaCollection; @OneToMany(mappedBy = "procFkSolicitacaoId")

Lucas Bom dia !

      O relacionamento entre Solicitação -----------------------&gt; Intermediária Funciona perfeitamente..

1 - cadastro de solicitação funciona normalmente, cadastra uma solicitação gera um código

@Post @Path(&quot;/solicitacao/adiciona&quot;) public void adiciona(Solicitacao solicitacao) throws Exception{ validator.addAll(Hibernate.validate(solicitacao)); validator.onErrorUse(page()).of(SolicitacaoController.class).formulario(); dao.salva(solicitacao); result.redirectTo(SolicitacaoController.class).formulario(); }

Na tela de cadastro da intermediaria eu uso Checkbox, cada Chequebox representa um serviço, quando eu marco 5 serviços por exemplo são criadas 5 linhas (túpulas) no meu banco !

id nome_do_serviço Descriçao valor CODIGO_DA_SOLICITAÇAO
1 agua exame … 500,00 ?
2 fezes exame … 500,00 ?
3 multi exame … 500,00 ?
4 ferro exame … 500,00 ?
5 pedra exame … 500,00 ?

Mas não é levado o código da solicitação, pois eu uso um FOR no metódo adicionar, se eu tirar o For, ele cadastra o código da solicitação perfeitamente mas não cadastra os Serviços…

Logo o meu problema e adicionar o codigo da solicitação no For, para toda vez que ele gerar uma linha (tupula) ele levar o codigo da solicitação !

[code] @Post @Path("/intermediariaServicosDimat/adiciona")
public void adicionaServicosDimat(List<Intermediaria> intermediariaList) throws Exception{

                for(Intermediaria intermediaria : intermediariaList) {
                    validator.addAll(Hibernate.validate(intermediaria));
                    validator.onErrorUse(page()).of(IntermediariaDimeeController.class).formulario();
                    dao.salva(intermediaria);
                }
                result.redirectTo(SolicitacaoController.class).servicosDimat();
         
    }[/code]

Obrigado Lucas…

Junior.

Lucas tem algum exemplo que possa da uma luz sobre isso ai ?

Jr

pior que não, mas sugiro vc dar uma olhada nas docs/tutoriais do hibernate

Conseguindo algum resultado posto aqui…

Mas você entendeu a dúvida ?

jr

TLDR

Após vc enviar a solicitação é que vc mostra a pagina pra escolher os serviços, é isso ? Se for isso o que ta faltando é vc colocar o ID da solicitacao no result e recuperar na pagina de serviços e colocar ele como hidden e no name do INPUT coloque a atribuição da classe.atributo e ai no “/intermediariaServicosDimat/adiciona” vc vai ter esse valor ja atribuido no objeto “intermediaria”

PB boa tarde !

   Tudo bom ?

    Isso já ta feito :

           [code]
                                        &lt;tr&gt;
                                            &lt;td&gt;&lt;center&gt;Código&lt;/center&gt;&lt;/td&gt;
                                            &lt;td&gt;<a>${solicitacao.soliPkId}</a>&lt;/td&gt;
                                        &lt;/tr&gt;


                                    &lt;tr&gt;
	                            &lt;td height="30" align="right" class="tabelaFonte"&gt;&lt;/td&gt;
	                            &lt;td height="30" class="tabelaFonte"&gt;
                                            <p>&lt;span &gt;
                                                  &lt;c:forEach var="servicosDimee" items="${servicosdimees}" varStatus="i"&gt;
                                                      &lt;input type="checkbox" name="intermediariaList[${i.index}].inteFkServicoDimeeId.smeePkId"
                                                             value="${servicosDimee.smeePkId}" /&gt;${servicosDimee.smeeNome}<br />
                                                  &lt;/c:forEach&gt;<br/>
                                               &lt;span &gt;&lt;span class="radioRequiredMsg"&gt;Por favor, marque os serviços.&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;
	                                </p>&lt;/td&gt;
	                        &lt;/tr&gt;

[/code]

o problema e por dentro do FOR este código !

Tem alguém que logo vai ganhar um processo por publicar prints e fontes dos projetos pela internet afora…

[quote=juniorsatanas]PB boa tarde !

   Tudo bom ?

    Isso já ta feito :

           [code]
                                        &lt;tr&gt;
                                            &lt;td&gt;&lt;center&gt;Código&lt;/center&gt;&lt;/td&gt;
                                            &lt;td&gt;<a>${solicitacao.soliPkId}</a>&lt;/td&gt;
                                        &lt;/tr&gt;


                                    &lt;tr&gt;
	                            &lt;td height="30" align="right" class="tabelaFonte"&gt;&lt;/td&gt;
	                            &lt;td height="30" class="tabelaFonte"&gt;
                                            <p>&lt;span &gt;
                                                  &lt;c:forEach var="servicosDimee" items="${servicosdimees}" varStatus="i"&gt;
                                                      &lt;input type="checkbox" name="intermediariaList[${i.index}].inteFkServicoDimeeId.smeePkId"
                                                             value="${servicosDimee.smeePkId}" /&gt;${servicosDimee.smeeNome}<br />
                                                  &lt;/c:forEach&gt;<br/>
                                               &lt;span &gt;&lt;span class="radioRequiredMsg"&gt;Por favor, marque os serviços.&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;
	                                </p>&lt;/td&gt;
	                        &lt;/tr&gt;

[/code]

[/quote]

Acho que não, pois na linha 3 vc só exibe e esse valor não volta pro servidor, dentro do FOR coloque um outro <INPUT> como hidden e atribua o valor da linha 3 ai vc vai ter o objeto pronto com a referencia ao objeto Solicitação

garcia-jj Bom dia !

Esse sistema SIGI, é um sistema Open, do GOVERNO DO ESTADO quando for terminado será postado um manual o DER e os Fontes aqui !

Abraço !

pbnf Bom Dia !

Antes de tudo obrigado pela ajuda, como ficaria esse FOR ? eu não conseguir captar sua mensagem !

Abraço Jr.

[quote=juniorsatanas]PB boa tarde !

   Tudo bom ?

    Isso já ta feito :

           [code]
                                        &lt;tr&gt;
                                            &lt;td&gt;&lt;center&gt;Código&lt;/center&gt;&lt;/td&gt;
                                            &lt;td&gt;<a>${solicitacao.soliPkId}</a>&lt;/td&gt;
                                        &lt;/tr&gt;


                                    &lt;tr&gt;
	                            &lt;td height="30" align="right" class="tabelaFonte"&gt;&lt;/td&gt;
	                            &lt;td height="30" class="tabelaFonte"&gt;
                                            <p>&lt;span &gt;
                                                  &lt;c:forEach var="servicosDimee" items="${servicosdimees}" varStatus="i"&gt;
                                                      &lt;input type="checkbox" name="intermediariaList[${i.index}].inteFkServicoDimeeId.smeePkId"
                                                             value="${servicosDimee.smeePkId}" /&gt;${servicosDimee.smeeNome}<br />
                                                  &lt;/c:forEach&gt;<br/>
                                               &lt;span &gt;&lt;span class="radioRequiredMsg"&gt;Por favor, marque os serviços.&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;
	                                </p>&lt;/td&gt;
	                        &lt;/tr&gt;

[/code]

[/quote]

Dentro do <c:forEach> coloque a linha:

                                                      &lt;input type="hidden" name="intermediariaList[${i.index}].inteCodigoSolicitacao" value="${solicitacao.soliPkId}" /&gt;