Jsf 表单和面板网格中CommandButton的ActionListener方法don';行不通

Jsf 表单和面板网格中CommandButton的ActionListener方法don';行不通,jsf,primefaces,commandbutton,Jsf,Primefaces,Commandbutton,我已经创建了一个CRUD页面,可以添加、删除、更新数据库中的表。但是,我对p:commandButton有问题。actionListener没有被触发,我在控制台中没有看到任何错误 cpret.xhtml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmln

我已经创建了一个CRUD页面,可以添加、删除、更新数据库中的表。但是,我对
p:commandButton
有问题。
actionListener
没有被触发,我在控制台中没有看到任何错误

cpret.xhtml

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">



<h:head><title>Chargé clientele</title>
</h:head>

<h:body>
<ui:composition template="/layout.xhtml">
<ui:define name="menu">
<h:form id="menu">
<p:outputPanel id="panel" autoUpdate="true" >
<h:panelGrid columns="1" style="align:center;">
<p:commandButton value="Ajouter Pret" action="#{chargepretBean.add}" style="width:250px;" update=":add" oncomplete="addWid.show()"></p:commandButton>
<p:commandButton value="Modifier Pret" disabled="#{chargepretBean.selectedValue ==null}" style="width:250px;" update=":add" action="#{chargepretBean.edit}" oncomplete="addWid.show()"></p:commandButton>
<p:commandButton value="Supprimer Pret" disabled="#{chargepretBean.selectedValue ==null}"  onclick="deleteEl.show()" style="width:250px;" type="button"></p:commandButton>

</h:panelGrid>
</p:outputPanel>
<p:confirmDialog widgetVar="deleteEl" message="Voulez vous réellement supprimer l'élément?" severity="alert">
<p:commandButton value="Annuler" type="button" onclick="deleteEl.hide()"></p:commandButton>
<p:commandButton value="Valider" action="#{chargepretBean.delete}" oncomplete="deleteEl.hide()" update=":idForm:data"></p:commandButton>
</p:confirmDialog>
</h:form>
</ui:define>

<ui:define name="table">
<h:form id="idForm">
<p:dataTable id="data" value="#{chargepretBean.listData}" var="b" rowKey="#{b.idPret}"
selectionMode="single" selection="#{chargepretBean.selectedValue}" paginator="true" paginatorPosition="bottom" rows="5">
<p:ajax event="rowSelect" update=":menu:panel"/>
<f:facet name="header">  
            Liste des prets  
        </f:facet>  
<p:column headerText="Date de demande"> <h:outputText value="#{b.dateDemande}" /></p:column>
<p:column headerText="Montant"> <h:outputText value="#{b.montant}" /></p:column>
<p:column headerText="nbre de Monsualite"> <h:outputText value="#{b.nbrMonsualite}" /></p:column>
<p:column headerText="Description de pret"> <h:outputText value="#{b.notepret.descriptionp}" /></p:column>
<p:column headerText="Taux d'intéret"> <h:outputText value="#{b.tauxInteret}" /></p:column>
</p:dataTable>
</h:form>


<p:dialog widgetVar="addWid" width="500" height="280">
<f:facet name="header">Ajout/Modification Pret</f:facet>
<h:form id="add">
<p:panelGrid columns="3" style="width:100%;">

<p:outputLabel value="Date de demande :" for="datedemande"></p:outputLabel>
<p:inputMask mask="99/99/9999" id="datedemande" value="#{chargepretBean.pret.dateDemande}" required="true"
requiredMessage="champs obligatoire">
</p:inputMask>
<p:message for="datedemande"></p:message>

<p:outputLabel value="Montant :" for="montant"></p:outputLabel>
<p:inputText id="montant" value="#{chargepretBean.pret.montant}" required="true"
requiredMessage="champs obligatoire">
<f:validateLongRange minimum="0" maximum="3000"></f:validateLongRange>
</p:inputText>
<p:message for="montant"></p:message>

<p:outputLabel value="nbre de Monsualite :" for="nbrMonsualite"></p:outputLabel>
<p:inputText id="nbrMonsualite" value="#{chargepretBean.pret.nbrMonsualite}" required="true"
requiredMessage="champs obligatoire"></p:inputText>
<p:message for="nbrMonsualite"></p:message>

<p:outputLabel value="Description pret :" for="descriptionp"></p:outputLabel>
<p:inputText id="descriptionp" value="#{chargepretBean.notepret.descriptionp}" required="true"
requiredMessage="champs obligatoire"></p:inputText>
<p:message for="descriptionp"></p:message>

<p:outputLabel value="Taux d'interet :" for="tauxInteret"></p:outputLabel>
<p:inputText id="tauxInteret" value="#{chargepretBean.pret.tauxInteret}" required="true"
requiredMessage="champs obligatoire"></p:inputText>
<p:message for="tauxInteret"></p:message>

<f:facet name="footer">  
<p:commandButton value="Enregistrer"  actionListener="#{chargepretBean.save}" update="@form :idForm:data"  process="@form" oncomplete="handleClose(xhr, status, args)"></p:commandButton>
</f:facet>
</p:panelGrid>
</h:form>
</p:dialog>

<script type="text/javascript">
function handleClose(xhr, status, args) { 
if (!args.validationFailed) {
    addWid.hide();
 }
}
</script>
</ui:define>
</ui:composition>
</h:body>

</html>

代理客户
普雷茨酒店
Ajout/修改Pret
函数handleClose(xhr,status,args){
如果(!args.validationFailed){
addWid.hide();
}
}
ChargepretBean.java

package com.isamm.Bean;


import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.event.ActionEvent;


import org.springframework.context.annotation.Scope;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

import com.isamm.Model.Chargepret;
import com.isamm.Model.Notepret;
import com.isamm.Model.Pret;
import com.isamm.Services.ChargepretService;
import com.isamm.Services.PretService;

@Component("chargepretBean")
@Scope
@ManagedBean
public class ChargepretBean implements Serializable {

    @Autowired
    private transient ChargepretService chargepretService;  

    @Autowired
    private transient PretService pretService;

    private List<Chargepret> lstchargeprets;

    private List<Pret> lstprets;

    private boolean fEdit=false;
    private Integer idCharge;

    private List<Pret> listData;

    private Pret selectedValue;

    private Pret pret=new Pret();
    private Notepret notepret = new  Notepret();

    @Autowired()
    private UserBean userBean;

    @PostConstruct
    public void init(){
        idCharge=userBean.getIdUser();
        listData=pretService.consulterPretByChargePret(idCharge);
    }

    public String add(){
        System.out.println("addBean");
        pret=new Pret();
        fEdit=false;
        return null;
    }

    public List<Chargepret> getLstchargeprets() {
        lstchargeprets=chargepretService.findbyall_Chargepret();
        System.out.println(lstchargeprets);
        return lstchargeprets;
    }


    public Boolean edit(){
        System.out.println("editebean");
        this.pret=pretService.finById_Pret(selectedValue.getIdPret());
        System.out.println(selectedValue.getIdPret());
        fEdit=true;
        //pretService.updatePret(pret);
        return fEdit;
    }

    public String delete(){
        System.out.println("deletebean");
        Pret cha=pretService.finById_Pret(selectedValue.getIdPret());
        pretService.deletePret(cha);
        this.selectedValue=null;
        listData=pretService.consulterPretByChargePret(idCharge);
        return null;
    }

    public void save(ActionEvent actionEvent){
        System.out.println("savebean");
        System.out.print("save0");
        Chargepret charge=chargepretService.finById_Chargepret(idCharge);
        pret.setChargepret(charge);

        if(!fEdit){
            System.out.print("save1");
            pretService.savePret(pret);
            System.out.print("save2");
        }else{
            System.out.print("save3");
            pretService.updatePret(pret);
            System.out.print("save4");
        }
        listData=pretService.consulterPretByChargePret(idCharge);
    }

    //getters & setters


    public List<Pret> getLstprets() {
        lstprets = pretService.findbyall_Pret(); 
        return lstprets;
    }

}
package com.isamm.Bean;
导入java.io.Serializable;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入javax.faces.bean.ManagedBean;
导入javax.faces.event.ActionEvent;
导入org.springframework.context.annotation.Scope;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Component;
导入com.isamm.Model.Chargepret;
导入com.isamm.Model.Notepret;
导入com.isamm.Model.Pret;
导入com.isamm.Services.ChargepretService;
导入com.isamm.Services.PretService;
@组件(“chargepretBean”)
@范围
@ManagedBean
公共类ChargepretBean实现了可序列化{
@自动连线
私人临时收费服务;
@自动连线
私人临时预处理服务;
私人名单;
私人名单;
私有布尔fEdit=false;
私人整数idCharge;
私有列表数据;
私有预选择值;
private Pret Pret=新Pret();
private Notepret Notepret=new Notepret();
@自动连线
私有用户bean用户bean;
@施工后
公共void init(){
idCharge=userBean.getIdUser();
listData=pretService.consultExpertByChargePret(idCharge);
}
公共字符串add(){
System.out.println(“addBean”);
pret=新pret();
fEdit=false;
返回null;
}
公共列表getLstchargeprets(){
lschargeprets=chargepretService.findbyall_Chargepret();
系统输出打印项次(LSTS);
退还税款;
}
公共布尔编辑(){
System.out.println(“editebean”);
this.pret=pretService.finById_pret(selectedValue.getIdPret());
System.out.println(selectedValue.getIdPret());
fEdit=true;
//pretService.updateSet(pret);
返回fEdit;
}
公共字符串删除(){
System.out.println(“deletebean”);
Pret cha=pretService.finById_Pret(selectedValue.getIdPret());
删除pret(cha);
此.selectedValue=null;
listData=pretService.consultExpertByChargePret(idCharge);
返回null;
}
公共作废保存(ActionEvent ActionEvent){
System.out.println(“savebean”);
系统输出打印(“保存0”);
Chargepret charge=chargepretService.finById\u Chargepret(idCharge);
pret.设置费用pret(费用);
如果(!fEdit){
系统输出打印(“保存1”);
pretService.savePret(pret);
系统输出打印(“保存2”);
}否则{
系统输出打印(“保存3”);
pretService.updateSet(pret);
系统输出打印(“保存4”);
}
listData=pretService.consultExpertByChargePret(idCharge);
}
//接球手和接球手
公共列表getlstprests(){
lstprest=pretService.findbyall_Pret();
返回lstprest;
}
}

看看这里,很有意思,谢谢你的回复,但我找不到解决方案该链接可能会帮助你,谢谢我更改流程=“@this”,他打电话给actionListneer,但我有一个问题:java.lang.NullPointerException位于com.isamm.Bean.ChargepretBean.save(ChargepretBean.java:108)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处,这一行