Pregunta

El problema es que cuando en el cuadro de diálogo haga clic en el botón con el valor de "Agregar" la función "Añadir" en el bean no se llama( me di cuenta de que con system.out) y no entiendo por qué.Es que algunos limitación de diálogo que se debe cerrar con un onComplete etiqueta o algo más??O tal vez porque no puedo usar el botón de acción en el diálogo?Espero que alguien me pueda ayudar.Gracias.Yo tengo mi página 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>

Y mi bean:

   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);
                    }
                }
            }
    }
¿Fue útil?

Solución

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

Sólo tienes que procesar los datos de cuadro de diálogo.

Solución:Cambio RequestScoped a ViewScoped (Comentarios)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top