Question

Le problème est que lorsque dans la boîte de dialogue je clique sur le bouton avec la valeur "Ajouter", la fonction "Ajouter" dans le bean n'est pas appelée (je l'ai remarqué avec system.out) et je ne comprends pas pourquoi.Est-ce une limitation du dialogue qui doit être fermé avec un onComplete tag ou autre chose ?? Ou peut-être parce que je ne peux pas utiliser l'action du bouton dans la boîte de dialogue ?J'espère que quelqu'un pourra m'aider.Merci.J'ai ma page 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>Add a Confirmed Package</title>
</h:head>
<h:body>
    <h:form id="form">




                <p:dataTable id="packages" var="defpack" value="#{addConfirmedPackageBean.defpackagesDTO}" rowKey="#{defpack.name}"
                        selection="#{addConfirmedPackageBean.packageSelected}" selectionMode="single">

                        <f:facet name="header">  
            Click "View" button after selecting a row to see details  
        </f:facet>

                        <p:column headerText="NamePackage">  
                        #{defpack.name}  
                        </p:column>

                         <p:column style="width:4%">  
                         <p:commandButton id="selectButton" update=":form:display" oncomplete="PF('Personalizza').show()" icon="ui-icon-heart" title="Modify" action="#{addConfirmedPackageBean.savelocation()}">  
                <f:setPropertyActionListener value="#{defpack}" target="#{addConfirmedPackageBean.packageSelected}"  />  
            </p:commandButton>  
        </p:column>     

                        <f:facet name="footer">
                            <p:commandButton id="viewButton" value="Scelgo"
                                icon="ui-icon-search" update=":form:display"
                                action="#{addConfirmedPackageBean.fine()}" />
                        </f:facet>

                    </p:dataTable>





<p:dialog id="Personalizzazione" header="Personalizza Pacchetto" widgetVar="Personalizza" resizable="false"  
              width="400" showEffect="clip" hideEffect="fold">  

        <h:panelGrid id="display" columns="2" cellpadding="4">  

        <h:outputLabel for="Flight">Personalizza il tuo flight:</h:outputLabel>
                <h:selectOneMenu for="Flight" value="#{addConfirmedPackageBean.fly}">
                    <f:selectItems id="Flight"
                        value="#{addConfirmedPackageBean.elelislocationflightPacchetto}" var="ElementDTO"
                        itemValue="#{ElementDTO.name}" itemLabel="#{ElementDTO.name}" />
                </h:selectOneMenu>

        <h:outputLabel for="Hotel">Personalizza il tuo Hotel:</h:outputLabel>
        <h:selectOneMenu for="Hotel" value="#{addConfirmedPackageBean.hotel}">
        <f:selectItems id="Hotel"
                        value="#{addConfirmedPackageBean.elelislocationhotelPacchetto}" var="ElementDTO"
                        itemValue="#{ElementDTO.name}" itemLabel="#{ElementDTO.name}" />
        </h:selectOneMenu>
            </h:panelGrid>
        <p:commandButton id="Bottone" value="Add" update="display" action="#{addConfirmedPackageBean.Add()}"/>  


    </p:dialog>

    </h:form>
</h:body>

</html>

Et mon haricot :

   package beans;

    import java.util.ArrayList;

    import javax.annotation.PostConstruct;
    import javax.ejb.EJB;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;








    import confirmedPackageManagement.ConfirmedPackageMgr;
    import confirmedPackageManagementDTO.ConfirmedPackageDTO;
    import elementManagement.ElementMgr;
    import elementManagementDTO.ElementDTO;
    import DefaultPackageManagement.DefaultPackageMgr;
    import DefaultPackageManagementDTO.DefaultPackageDTO;

    @ManagedBean(name="addConfirmedPackageBean") //come viene richiamato 
    @RequestScoped
    public class AddConfirmedPackageBean {

        @EJB
        private DefaultPackageMgr defpackMgr;

        @EJB
        private ConfirmedPackageMgr confpackMgr;

        @EJB
        private ElementMgr eleMgr;

        private ArrayList<DefaultPackageDTO>  defpackagesDTO;
        private DefaultPackageDTO packageSelected;
        private ArrayList<ElementDTO> elelislocationflightPacchetto;
        private ArrayList<ElementDTO> elelislocationhotelPacchetto;
        private String locationSelected;
        private String name;
        private String fly;
        private String hotel;
        private ConfirmedPackageDTO confpackageDTO;
        private ArrayList<ElementDTO> elements;

        public AddConfirmedPackageBean(){
            confpackageDTO=new ConfirmedPackageDTO();
            this.elements=new ArrayList<ElementDTO>();
            this.packageSelected=new DefaultPackageDTO();
        }
        @PostConstruct
        public void init()
        {
        this.setDefpackagesDTO(defpackMgr.getAllDefaultPackage());


        }

        public void savelocation(){
            this.locationSelected=this.packageSelected.getLocation();
            this.setElelislocationflightPacchetto(eleMgr.getAllFlightsByLocation(locationSelected));
            this.setElelislocationhotelPacchetto(eleMgr.getAllHotelsByLocation(locationSelected));
            System.out.println("cazzo il mio pacchetto ha location  ");
        }
        public ArrayList<ElementDTO> getElelislocationhotelPacchetto() {
            return elelislocationhotelPacchetto;
        }

        public void setElelislocationhotelPacchetto(
                ArrayList<ElementDTO> elelislocationhotelPacchetto) {
            this.elelislocationhotelPacchetto = elelislocationhotelPacchetto;
        }

        public ArrayList<ElementDTO> getElelislocationflightPacchetto() {
            return elelislocationflightPacchetto;
        }

        public void setElelislocationflightPacchetto(
                ArrayList<ElementDTO> elelislocationflightPacchetto) {
            this.elelislocationflightPacchetto = elelislocationflightPacchetto;
        }



        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getLocationSelected() {
            return locationSelected;
        }

        public void setLocationSelected(String locationSelected) {
            this.locationSelected = locationSelected;
        }


        public DefaultPackageDTO getPackageSelected() {
            return packageSelected;
        }

        public void setPackageSelected(DefaultPackageDTO packageSelected) {
            this.packageSelected = packageSelected;
        }

        public ArrayList<DefaultPackageDTO> getDefpackagesDTO() {
            return defpackagesDTO;
        }

        public void setDefpackagesDTO(ArrayList<DefaultPackageDTO> defpackagesDTO) {
            this.defpackagesDTO = defpackagesDTO;
        }

        public String fine(){


            return "/employee/index?faces-redirect=true";
        }

        public String Add(){
            System.out.print("il pacchetto confermato ha il nome ");
            System.out.print("il pacchetto confermato ha il nome "+this.confpackageDTO.getName());
            this.AssignElemFlyFromSelection();
            this.AssignElemHotelFromSelection();
            this.confpackageDTO.setName(this.packageSelected.getName());
            this.confpackageDTO.setLocation(this.packageSelected.getLocation());
            this.confpackageDTO.setElem(this.elements);
            System.out.print("il pacchetto confermato ha il nome "+this.confpackageDTO.getName());
            System.out.print("il pacchetto confermato ha la location "+this.confpackageDTO.getLocation());
            System.out.print("il pacchetto confermato ha l'hotel "+this.confpackageDTO.getElem().get(0).getName());
            System.out.print("il pacchetto confermato ha il volo "+this.confpackageDTO.getElem().get(1).getName());
            this.confpackMgr.save(this.confpackageDTO);
            return "/employee/index?faces-redirect=true";

        }

        public String getFly() {
            return fly;
        }

        public void setFly(String fly) {
            this.fly = fly;
        }

        public String getHotel() {
            return hotel;
        }

        public void setHotel(String hotel) {
            this.hotel = hotel;
        }
         private void AssignElemFlyFromSelection()
            {
                for (ElementDTO elem:this.elelislocationflightPacchetto)
                {
                    if(elem.getName().equals(this.fly))
                    {
                        this.elements.add(elem);
                    }
                }
            }

            private void AssignElemHotelFromSelection()
            {
                for (ElementDTO elem:this.elelislocationhotelPacchetto)
                {
                    if(elem.getName().equals(this.hotel))
                    {
                        this.elements.add(elem);
                    }
                }
            }
    }
Était-ce utile?

La solution

<p:commandButton id="Bottone" value="Add" update="display" actionListener="#{addConfirmedPackageBean.Add()}" process=":form:display,:form:packages,@this"/> 

Il vous suffit de traiter les données du dialogue.

Solution:Remplacez RequestScoped par ViewScoped (Commentaires)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top