Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring p:commandButton未在p:dialog内触发_Spring_Jsf - Fatal编程技术网

Spring p:commandButton未在p:dialog内触发

Spring p:commandButton未在p:dialog内触发,spring,jsf,Spring,Jsf,我开始学习JSF和primeface,我有一个xhtml页面和一个对话框,但CommandButton中的actionListener在更新时不起作用。 请帮帮我。 下面是我的xhtml文件的内容 <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun

我开始学习JSF和primeface,我有一个xhtml页面和一个对话框,但CommandButton中的actionListener在更新时不起作用。 请帮帮我。 下面是我的xhtml文件的内容

<ui:composition 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"
                template="/WEB-INF/template/template.xhtml">
    <ui:define name="title">Continents</ui:define>
    <ui:define name="content">
        <h:head >
                <f:loadBundle basename="fst.info.memoire.bundle.messages" var="msg"/>
        </h:head>
        <h:body>
            <div class="ui-g">
                <div class="ui-g-12">
                    <div class="card">
                        <h1>Gestion des continents</h1>       
                         <h:form id="main" >
                             <p:growl id="messages" showDetail="true" />
                             <h:panelGrid columns="1" style="margin-bottom:10px" cellpadding="5">
                             <p:toolbar>
                                <f:facet name="left">
                                    <p:commandButton  value="Nouveau"  icon="fa fa-plus"   onclick="PF('continentAdd').show();" update=":add:displaye1" />
                                 </f:facet>
                             </p:toolbar>
                             <p:dataTable id="listTab" var="continent" value="#{continentBean.listerContinent()}" selectionMode="single" 
                             rowKey="#{continent.code}" reflow="true" selection="#{continentBean.selectedContinent}" emptyMessage="Aucun enregistrement">
                                 <f:facet name="header">Liste des continents</f:facet>
                                 <p:column headerText="Code">
                                     <h:outputText value="#{continent.code}" />
                                 </p:column>
                                 <p:column headerText="Nom" >   
                                    <h:outputText value="#{continent.nom}" />                   
                                 </p:column>
                                 <p:column headerText="Actions" >
                                     <div style="text-align: center;">
                                        <p:commandButton id="modifier" icon="fa fa-pencil" title="Modifier" />
                                        <p:commandButton id="supprimer" icon="fa fa-trash" title="Supprimer" actionListener="#{continentBean.supprimerContinent}" update=":main:listTab,:main:messages ">
                                            <p:confirm header="Confirmation" message="Etes vous sur de vouloir supprimer cet enregistrement?" icon="fa fa-exclamation-triangle" />
                                        </p:commandButton>
                                     </div>
                                 </p:column>
                             </p:dataTable>   
                             </h:panelGrid>
                             <p:confirmDialog global="true" showEffect="fade" >
                                <p:commandButton value="Oui" type="button" styleClass="ui-confirmdialog-yes" icon="fa fa-check" />
                                <p:commandButton value="Non" type="button" styleClass="ui-confirmdialog-no" icon="fa fa-close" />
                            </p:confirmDialog>

                        </h:form>   
                        <p:dialog header="Ajouter un continent" widgetVar="continentAdd"
                            resizable="false" modal="true" id="addCont" >
                            <h:form id="add">
                                <p:growl id="growl" showDetail="true" />
                                <h:panelGrid id="displaye1" columns="3" cellpadding="4"
                                    style="margin:0 auto;">
                                    <p:outputLabel for="code" value="Code" />
                                    <p:inputText value="#{continentBean.code}" id="code" required="true" requiredMessage="#{msg['continent.code']}">
                                        <f:ajax event="blur" render="messagecode"/>
                                    </p:inputText>
                                    <p:message for="code" style="color:red" id="messagecode"/>
                                    <p:outputLabel for="nom" value="Nom" />
                                    <p:inputText value="#{continentBean.nom}" id="nom" required="true" requiredMessage="#{msg['continent.nom']}">
                                        <f:ajax event="blur" render="messageNom"/>
                                    </p:inputText>
                                    <p:message for="nom" style="color:red" id="messageNom"/>
                                </h:panelGrid>
                                <p:separator />
                                <div align="center">
                                    <p:commandButton value="Ajouter" update=":main:listTab,:main:messages " icon="fa fa-check" ajax="true"
                                    action="#{continentBean.ajouterContinent()}"
                                    oncomplete="PF('continentAdd').hide();" />
                                    <p:commandButton value="Annuler" icon="fa fa-close"
                                    oncomplete="PF('continentAdd').hide();" />
                                </div>
                            </h:form>
                        </p:dialog> 
                    </div>
                </div>
            </div>
        </h:body>


    </ui:define>

</ui:composition>

大洲
大陆运动
大陆列表
这是我的背豆

package fst.info.memoire.presentation.admin;

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

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

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

import fst.info.memoire.model.Continent;
import fst.info.memoire.service.admin.interf.ContinentService;


@Component
@ManagedBean(name="continentBean")
@SessionScoped
public class ContinentBean implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @ManagedProperty(value="#{continentService}")
    @Autowired
    ContinentService continentService;
    String code ;
    String nom ;
    Continent selectedContinent ;
    List<Continent> listContinent ;
    public ContinentBean() {
        super();
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getNom() {
        return nom;
    }
    public void setNom(String nom) {
        this.nom = nom;
    }
    public ContinentService getContinentService() {
        return continentService;
    }
    public void setContinentService(ContinentService continentService) {
        this.continentService = continentService;
    }
    public Continent getSelectedContinent() {
        return selectedContinent;
    }
    public void setSelectedContinent(Continent selectedContinent) {
        this.selectedContinent = selectedContinent;
    }
    public List<Continent> getListContinent() {
        return listContinent;
    }
    public void setListContinent(List<Continent> listContinent) {
        this.listContinent = listContinent;
    }

    public List<Continent> listerContinent() {
        return continentService.listContinent();
    }
    public void ajouterContinent(ActionEvent event){
        System.out.println("---------Click!");
        FacesContext context = FacesContext.getCurrentInstance();
        try{
            Continent continent = new Continent();
            continent.setCode(this.code);
            continent.setNom(this.nom);
            continentService.ajouterContinent(continent);
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Succes", "Continent ajouté avec succès");
            context.addMessage(null, message);
        }catch(Exception e){
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erreur", "Erreur lors de l'ajout");
            context.addMessage(null, message);
        }  

    }
    public void supprimerContinent(){
        addMessage("System Error", "Please try again later.");
    }

    public void addMessage(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }


}
包fst.info.memoire.presentation.admin;
导入java.io.Serializable;
导入java.util.List;
导入javax.faces.application.FacesMessage;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.ManagedProperty;
导入javax.faces.bean.SessionScoped;
导入javax.faces.context.FacesContext;
导入javax.faces.event.ActionEvent;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Component;
导入fst.info.memoire.model.Continent;
导入fst.info.memoire.service.admin.interf.service;
@组成部分
@ManagedBean(name=“ColumentBean”)
@会议范围
公共类bean实现了可序列化{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
@ManagedProperty(value=“#{continentService}”)
@自动连线
大陆服务大陆服务;
字符串代码;
字符串名称;
大陆选择大陆;
非洲大陆名单;
公共豆(){
超级();
}
公共字符串getCode(){
返回码;
}
公共无效设置码(字符串码){
this.code=代码;
}
公共字符串getNom(){
返回名称;
}
公共无效集合名(字符串名){
this.nom=nom;
}
公共服务getContinentService(){
退货服务;
}
公共服务(大陆服务){
this.contricentservice=contricentservice;
}
公共大陆GetSelectedContinental(){
返回所选大陆;
}
公共无效设置选定大陆(大陆选定大陆){
this.selectedconstratine=selectedconstratine;
}
公共列表getListContinental(){
返回大陆;
}
public void setListContinental(列表ListContinental){
this.listcontrole=listcontrole;
}
公共列表列表内容(){
return contricentservice.listcontricent();
}
public void AjoterContinent(ActionEvent事件){
System.out.println(“-----------点击!”);
FacesContext context=FacesContext.getCurrentInstance();
试一试{
大陆=新大陆();
大陆.setCode(this.code);
大陆.setNom(this.nom);
大陆服务。AjoterContinent(大陆);
FacesMessage=新的FacesMessage(FacesMessage.SEVERITY_信息,“成功”,“大陆成功”);
addMessage(null,message);
}捕获(例外e){
FacesMessage=新的FacesMessage(FacesMessage.SEVERITY_错误,“Erreur”,“Erreur lors de l'ajout”);
addMessage(null,message);
}  
}
公共空间补充大陆(英文){
addMessage(“系统错误”,“请稍后再试”);
}
public void addMessage(字符串摘要、字符串详细信息){
FacesMessage=新的FacesMessage(FacesMessage.SEVERITY_信息、摘要、详细信息);
FacesContext.getCurrentInstance().addMessage(空,消息);
}
}

您的命令按钮应如下所示:

<p:commandButton value="Ajouter" update=":main:listTab,:main:messages " icon="fa fa-check" 
           actionListener="#{continentBean.ajouterContinent()}"
           oncomplete="PF('continentAdd').hide();" />


您不需要ajax=“true”,这是默认值,而且最重要的是,当您打算执行ajax调用时,您必须使用
actionListener
,而不是
action
(用于标准同步POST请求)。

您的命令按钮应该如下所示:

<p:commandButton value="Ajouter" update=":main:listTab,:main:messages " icon="fa fa-check" 
           actionListener="#{continentBean.ajouterContinent()}"
           oncomplete="PF('continentAdd').hide();" />

您不需要ajax=“true”,这是默认值,而且最重要的是,当您打算执行ajax调用时,必须使用
actionListener
而不是
action
(用于standar