Bom dia MarcolaLipe10 tudo blz?
Então cara, é exatamente isso, mas esses métodos não aprendi na faculdade, eu aprendi
a CRUD, mas o alterar e excluir de uma dataTable não aprendi, olha os métodos alterar e
excluir do meu managedBean, aprendi dessa forma, mas assim só altera e exclui se eu digitar
os dados no formulário, o que eu gostaria de entender é como mandar o registro para o formulário quando eu
clica-se no botão alterar e excluir quando eu clica-se no botão excluir.
managedBean:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package managedBeans;
import entidades.Especialidades;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.ListDataModel;
import sessao.EspecialidadesFacade;
/**
*
* @author Gimenes
*/
@ManagedBean
@ViewScoped
public class especialidadesManagedBean implements java.io.Serializable{
@EJB
private EspecialidadesFacade especialidadesFacade;
private ListDataModel especialidadess;
public ListDataModel getEspecialidadess() {
return especialidadess;
}
public void setEspecialidadess(ListDataModel especialidadess) {
this.especialidadess = especialidadess;
}
private Especialidades especialidades;
public String inserirE(){
this.especialidadesFacade.create(especialidades);
return null;
}
public String alterarE(){
this.especialidadesFacade.edit(especialidades);
return null;
}
public String removerE(){
this.especialidadesFacade.remove(especialidades);
return null;
}
private void recuperarEspecialidades(){
this.especialidadess = new ListDataModel(especialidadesFacade.recuperarTodos());
}
public void recuperar(){
this.recuperarEspecialidades();
}
public Especialidades getEspecialidades() {
if(especialidades ==null){
especialidades = new Especialidades();
}
return especialidades;
}
public void setEspecialidades(Especialidades especialidades) {
this.especialidades = especialidades;
}
}
Mais uma vez obrigado pela paciência, valeu mesmo.
Galera, podem me ajudar ?
Em relação ao assunto do tópico, quando tento excluir um item, o sistema só deleta o ultimo registro do datatable ! Jà tentei de TUDO… Segue o meu codigo, quem puder da uma força, ficarei muito grato ! valeu !
Uma parte é antes do Confirme Dialog, só para ajudarem a análise… Os botoes de exclusao ficam em cada registro da datatable
[code] <p:column style="width:10px" headerText="Data de Cadastro">
<center>#{cliente.dataCadastro}</center>
</p:column>
<!-- Aqui começa o botao de excluir -->
<p:column headerText="Ações">
<p:commandButton oncomplete="confirmation.show()"
icon="ui-icon-trash" ajax="true" title="Excluir o Cliente">
</p:commandButton>
<p:confirmDialog message="Deseja realmente excluir este registo?"
closable="true" header="Aviso"
severity="alert" widgetVar="confirmation" showEffect="fade"
global="true">
<p:commandButton id="btnSim" value="Sim"
oncomplete="confirmation.hide()" process="@this" action="#{clienteBean.excluir}"
update=" :lista:idTableListagem"
ajax="true" onclick="confirmation.hide()">
<f:setPropertyActionListener target="#{clienteBean.clienteSelecionado}" value="#{cliente}" />
</p:commandButton>
<p:commandButton id="btnNao" value="Não"
type="button" />
</p:confirmDialog>
</p:column>
</p:dataTable>
</center>
</p:fieldset>
</h:form>
</p:layoutUnit>
</p:layout>
[/code]
</html>
RESOLVIDO !
Galera, depois de muito esforço, noites e mais noites perdidas, descobri o que era ! Pelo menos no meu caso foi assim, a versao do JAR que estava usando estava com problema, estava usando a versao 4.0… PQP ! É DE CHORAR !
entao foi para versao 3.4 e funcinou beleza, fiz algumas alteracoes no codigo desse ultimo que postei… segue ai para quem quiser !!
valeu !!
[code]<p:column>
<p:commandButton value="Excluir" icon="ui-icon-trash"
oncomplete="confirmation#{cliente.id}.show()" ajax="true">
</p:commandButton>
<p:confirmDialog id="confirmDialog"
message="Deseja realmente excluir este registo?"
closable="true" header="Aviso"
severity="alert"
widgetVar="confirmation#{cliente.id}"
showEffect="fade"
global="true"
appendToBody="true">
<p:commandButton id="confirm" value="Sim"
oncomplete="confirmation#{cliente.id}.hide()" process="@this" action="#{clienteBean.excluir}"
update=" :lista:idTableListagem"
ajax="true" onclick="confirmation#{cliente.id}.hide()">
<f:setPropertyActionListener target="#{clienteBean.clienteSelecionado}" value="#{cliente}" />
</p:commandButton>
<p:commandButton id="btnNao" value="Não" type="button" onclick="confirmation#{cliente.id}.hide()" />
</p:confirmDialog>
</p:column>[/code]
Olá pessoal,
Tenho um problema semelhante,
Estou populando o dialog dentro de um p:datatable
[code]
<p:column headerText=“teste”>
<p:commandButton value=“Destroy the World”>
<p:confirm header=“Confirmation” message=“Are you sure?” icon=“ui-icon-alert” />
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" action="#{userController.deleteUser}" >
<f:setPropertyActionListener target="#{userController.id}" value="#{user.id}" />
</p:commandButton>
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:column>[/code]
Ele até exibe o confirm dialog, mas ao clicar na opção sim, ele não consegue chamar o método que está no bean, alguém pode me ajudar?
o action e o propertyActionListener devem ficar no p:commandButton, esse que tá com o value “Destroy the World”. O confirm dialog só tem que ter os botões sim e não. mais nada.
Olá erick,
alteração feita mas ainda sim, ele não chama o método deleteUser no bean userController…
[code]
<p:column headerText=“teste”>
<p:commandButton value=“Destroy the World” action="#{userController.deleteUser}">
<f:setPropertyActionListener target="#{userController.id}" value="#{user.id}" />
<p:confirm header=“Confirmation” message=“Are you sure?” icon=“ui-icon-alert” />
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:column>[/code]
Como tá o seu método? Tente com actionListener:
<p:commandButton value="Destroy the World" actionListener="#{userController.deleteUser}"> ...
//Bean
public void deleteUser(javax.faces.event.ActionEvent actionEvent){
System.out.println("Lambda Lambda Lambda");
}
Atualizado, mas ainda não chama o método…
[code] <p:column headerText=“teste”>
<p:commandButton value=“Destroy the World” actionListener="#{userController.deleteUser}">
<f:setPropertyActionListener target="#{userController.id}" value="#{user.id}" />
<p:confirm header=“Confirmation” message=“Are you sure?” icon=“ui-icon-alert” />
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:column>[/code]
[code]
@ManagedBean
public class UserController implements Serializable{
public void deleteUser(javax.faces.event.ActionEvent actionEvent)
{
.
.
.
}
}[/code]
Isso ta dentro de um h:form?
Sim, está dentro de um h:form e dentro de um p:dataTable.