GARANTIR DESCONTO

Fórum Primafaces usando dataTable com Dialog #459753

29/10/2013

0

Bom dia estou com dúvida de como realizar cadastro no primefaces utilizando dataTable e dialog,tenho cadastro de pessoa e quero cadastrar os dependentes, dentro do dataTable tenho coluna com botão adicionar dependente ao clicar nele ele chama um Dialog. Ao usar dialog quero ver qual é a melhor forma de passar a referencia de pessoa para dependente para eu poder cadastrar vários ao mesmo tempo essa é minha dúvida açguém pode me ajudar?


att,
Adriano de Aguiar
Adriano Aguiar

Adriano Aguiar

Responder

Posts

06/11/2013

Roselito Silva

Eu faço assim:

1- no managed bean, tenho um atributo pessoa;
2- no botão do dataTable, chamo um método do bean e passo a pessoa selecionada, por exemplo, #{controlador.dependentes(item)}, onde item é a linha do dataTable, que também é do tipo pessoa.
3- no dialog, uso sempre #{controlador.pessoa.atributo} como value dos inputs

Daí para frente é só preencher o formulário do dialog, gravar e atualizar a tabela depois de gravar.

Espero que ajude.
Responder

Gostei + 0

07/11/2013

Adriano Aguiar

dessa forma já fiz eu preciso, gravar vários registro dentro Dialog depois sim atualizar dataTable, mas consigo fazer somente um registro ai ele perde a referência!

att
Responder

Gostei + 0

07/11/2013

Eduardo Pessoa

Eu faço assim:

1- no managed bean, tenho um atributo pessoa;
2- no botão do dataTable, chamo um método do bean e passo a pessoa selecionada, por exemplo, #{controlador.dependentes(item)}, onde item é a linha do dataTable, que também é do tipo pessoa.
3- no dialog, uso sempre #{controlador.pessoa.atributo} como value dos inputs

Daí para frente é só preencher o formulário do dialog, gravar e atualizar a tabela depois de gravar.

Espero que ajude.


fiz algo parecido com JSF, mas acompanhando video aulas.
Responder

Gostei + 0

07/11/2013

Adriano Aguiar

vc tem essa vídeo aula?
Responder

Gostei + 0

07/11/2013

Roselito Silva

O escopo do seu bean é session, ou pelo menos view? Se você tem um atributo no bean que guarda o objeto que veio do dataTable, não perde a referência. Só no caso de escopo Request...
Responder

Gostei + 0

07/11/2013

Adriano Aguiar

vou fazer teste com session, se eu usar Request tem forma de realizar essa operação sem usar sessão!

att,
Responder

Gostei + 0

07/11/2013

Roselito Silva

Você não precisa trabalhar com a sessão, ou seja, ficar escrevendo e lendo parâmetros na sessão.

Um bean com @SessionScoped mantém os valores dos atributos até você fechar o navegador. Já o @ViewScoped mantém até você fechar a página. E o @RequestScoped perde tudo logo depois de um submit...

Portanto, se você tiver um atributo pessoa do tipo Pessoa instanciado no seu bean @ViewScoped, vai poder pegar o valor dele enquanto estiver na mesma página.
Responder

Gostei + 0

08/11/2013

Eduardo Pessoa

vc tem essa vídeo aula?


essa video é da devmedia, é um otimo curso.
Responder

Gostei + 0

08/11/2013

Adriano Aguiar

Boa tarde consegui fazer, mas surgiu novo problema como editar dependente dentro dialog montei um datatable que clicar botão editar e já selecionar os campo do form que está também denro do dialog!

att
Responder

Gostei + 0

09/11/2013

Eduardo Pessoa

pode postar o codigo ou a imagem?
Responder

Gostei + 0

09/11/2013

Adriano Aguiar

Esse código estou tentando colocar um dialog dentro do outro!

<p:dialog widgetVar="dialogSolicitacao" id="dlgsolicitacao"
header="Solicitação" modal="false" showEffect="clip"
hideEffect="clip" minWidth="800">
<h:form id="form">


<p:panel header="Cadastro de Pessoas que residem neste imóvel!"
styleClass="panelprincipal" style="width: 850px;">
<p:panel header="Pessoa" id="morad"
style="text-align: left; width: 800px;">
<p:messages id="messages" />
<p:panelGrid columns="2">

<h:outputLabel value="Classificação idade!" id="classificacao" />


<p:selectOneMenu value="#{pessoaBean.morador.classificacao}"
required="true" requiredMessage="Selecione uma das opções!">
<f:selectItem itemValue="" itemLabel="Selecione..." />
<f:selectItems value="#{pessoaBean.listaItem}" var="pessoa"
itemLabel="#{pessoaBean.descricao}" itemValue="#" />

</p:selectOneMenu>



<h:outputText value="Quantidade" id="quantidade" />
<p:inputText value="#{pessoaBean.morador.quantidade}" size="50"
required="true"
requiredMessage="Informe a Quantidade de Morador!"></p:inputText>

</p:panelGrid>
</p:panel>
<f:facet name="footer">
<p:commandButton value="Salvar" action="#{pessoaBean.salvar}"
update="form"></p:commandButton>
</f:facet>
</p:panel>
</h:form>

</p:dialog>
<p:dialog widgetVar="dialogVeiculo" id="dlgsolicitacaoVeiculo"
header="Cadastro de Veículo" modal="false" showEffect="clip"
hideEffect="clip" minWidth="800">
<h:form id="veiculo">
<p:panel header="Cadastro de Veículo!" styleClass="panelprincipal"
style="width: 850px;">
<p:panel header="Cliente" id="vei"
style="text-align: left; width: 800px;">
<p:messages id="messages" />
<p:panelGrid columns="2">

<h:outputText value="Marca" id="marca" />
<p:inputText value="#{veiculoBean.veiculo.marca}" size="50"
required="true" requiredMessage="Informe a marca do veículo"
label="marca"></p:inputText>
<h:outputText value="Tipo de Veículo" id="tipo" />
<p:inputText value="#{veiculoBean.veiculo.tipo}" size="50"
required="true" requiredMessage="Informe a tipo de veículo"
label="tipo"></p:inputText>
<h:outputText value="Placa" id="placa" />
<p:inputText value="#{veiculoBean.veiculo.placa}" size="50"
required="true" requiredMessage="Informe a tipo de veículo"
label="placa"></p:inputText>
<h:outputText value="Classis" id="classi" />
<p:inputText value="#{veiculoBean.veiculo.chassi}" size="50"
required="true" requiredMessage="Informe o classis" for="classi"></p:inputText>
</p:panelGrid>
</p:panel>
<f:facet name="footer">
<p:commandButton value="Salvar" action="#{veiculoBean.salvar}"
update=":listaV veiculo"></p:commandButton>
</f:facet>

</p:panel>




</h:form>
<h:form id="listaV">
<p:dataTable id="dataTable" var="m" value="#{veiculoBean.lista}"
scrollable="false" paginator="true" rows="10" scrollHeight="400"
paginatorTemplate=" "
rowsPerPageTemplate="5,10,15">
<f:facet name="header">
Lista de Moradores
</f:facet>

<p:column>
<f:facet name="header">
<h:outputText value="Codigo" />
</f:facet>
<h:outputText value="#{m.id}" />
</p:column>

<p:column>
<f:facet name="header">
<h:outputText value="Marca" />
</f:facet>
<h:outputText value="#{m.marca}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Tipo de Veículo" />
</f:facet>
<h:outputText value="#{m.tipo}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Placa" />
</f:facet>
<h:outputText value="#{m.placa}" />
</p:column>
<p:column headerText="Editar">
<f:facet name="header">Editar</f:facet>
<h:commandLink action="#{veiculoBean.doUpdateVeiculos(m)}"
oncomplete="dialogEditarVeiculo.show()">
<h:graphicImage library="img" name="btnEditar.png"
style="border:0;"></h:graphicImage>

</h:commandLink>
</p:column>
</p:dataTable>
</h:form>
<p:dialog widgetVar="dialogEditarVeiculo" id="dlgsolicitacaoVeicu"
header="Alterar Veiculo" modal="false" showEffect="clip"
hideEffect="clip" minWidth="800">
<h:form id="formAlt">
<p:panel header="Cadastro de Veículo!" styleClass="panelprincipal"
style="width: 850px;">
<p:panel header="Cliente" id="vei"
style="text-align: left; width: 800px;">

<p:messages id="messages" />
<p:panelGrid columns="2">

<h:outputText value="Marca" id="marcaEditar" />
<p:inputText value="#{veiculoBean.veiculo.marca}" size="50"
required="true" requiredMessage="Informe a marca do veículo"
label="marcaEditar"></p:inputText>
<h:outputText value="Tipo de Veículo" id="tipoEditar" />
<p:inputText value="#{veiculoBean.veiculo.tipo}" size="50"
required="true" requiredMessage="Informe a tipo de veículo"
label="tipoEditar"></p:inputText>
<h:outputText value="Placa" id="placaEditar" />
<p:inputText value="#{veiculoBean.veiculo.placa}" size="50"
required="true" requiredMessage="Informe a tipo de veículo"
label="placaEditar"></p:inputText>
<h:outputText value="Classis" id="classiEditar" />
<p:inputText value="#{veiculoBean.veiculo.chassi}" size="50"
required="true" requiredMessage="Informe o classis"
for="classiEditar"></p:inputText>
</p:panelGrid>
</p:panel>
<f:facet name="footer">
<p:commandButton value="Salvar" action="#{veiculoBean.salvar}"></p:commandButton>
</f:facet>
</p:panel>
</h:form>

</p:dialog>
</p:dialog>
Responder

Gostei + 0

10/11/2013

Roselito Silva

Dialogs aninhados não fazem muito sentido...
Responder

Gostei + 0

10/11/2013

Adriano Aguiar

qual e melhor forma de editar dependente, cadastrado no dialog?
Responder

Gostei + 0

10/11/2013

Adriano Aguiar

qual e melhor forma de editar dependente, cadastrado no dialog?
Responder

Gostei + 0

10/11/2013

Roselito Silva

Sua idéia está certa: de dentro de um dialog, você pode chamar outro. O que não está correto é codificar os dialogs aninhados. Eles devem ser codificados um após o outro. Inclusive você pode colocar em um dialog uma expressão EL que se refere a um objeto de outro dialog, sem problemas.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar