Tengo este problema.
Quería crear selectOneMenu para seleccionar personalizada algunos datos. Pero no está funcionando y la verdad, no sé por qué. Pasé cca 5 horas con este problema. Estoy tan desesperada.
Así que un poco de mi código:

Pero cuando voy a recoger algunas elemento de selectonemenu, selected_id todavía es 0. Aún así, todavía. Traté de hacer casi de todo pero sin resultado.

He intentado esto:

 <p:selectOneMenu value="#{medicinesBean.selectedBranch}" required="true" effect="fade" id="listComboBox">
                <f:selectItems value="#{medicinesBean.branchesForComboBox}" var="itm" itemLabel="#{itm.name}" itemValue="#{itm.id}" />
            </p:selectOneMenu>

    Backing Bean class:

     /* private members */
        private ArrayList<BranchDTO> branchesForComboBox = new ArrayList<BranchDTO>();
        private BranchDTO selectedBranch;

    /* getter and setters ... */

también he intentado esto con SelectItem[] modelo pero el resultado fue el mismo. NO TRABAJO.

Después probé como:

<p:selectOneMenu value="#{medicinesBean.selected_id}" required="true" effect="fade" id="listComboBox">
                <f:selectItem itemLabel="First" itemValue="1"/>
                <f:selectItem itemLabel="Second" itemValue="2"/>
                <f:selectItem itemLabel="Third" itemValue="3"/>
                <f:selectItem itemLabel="Fouth" itemValue="4"/>
</p:selectOneMenu>

/* private members */
private int selected_id;

Pero siendo 0. Cuando he usado el objeto como valor para selectonemenu, siempre null excepción siempre fue devuelto. Así que voy a ser feliz para cualquier asesoramiento para hacerlo.
Gracias

brw. backing bean es ViewScoped y los datos de DAO son correctamente devuelta para algunos bug será en el componente selectonemenu.


Gracias BalusC, así que aquí está mi aplicación

Backing Bean

/**
 * @author Sajmon
 */

package OraclBeans;

import DTOs.PobockaDTO;
import DTOs.ZoznamLiekovDTO;
import EJBs.ZoznamLiekovEJB;
import java.io.Serializable;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean(name="zoznamLiekovBean")
@ViewScoped
public class ZoznamLiekovBean implements Serializable {

    @EJB
    private ZoznamLiekovEJB listOfMedicineEJB;

    /* private members */
    private ArrayList<ZoznamLiekovDTO> listOfMedicines;
    private ArrayList<PobockaDTO> branchesForCombobox = new ArrayList<PobockaDTO>();
    private ZoznamLiekovDTO selectedItem;
    private PobockaDTO selectedBranch;
    //private SelectItem[] branchesOptions;
    //private SelectItem selectedOption;
    private int selected_id;


    public ZoznamLiekovBean() {
    }

    @PostConstruct
    private void init() {
        branchesForCombobox = listOfMedicineEJB.getBranches();
        listOfMedicines = listOfMedicineEJB.getLists();
    }


    public void test() {
       System.out.println("ID: " + selected_id);
    }

    /*
    private SelectItem[] addItemsToOptions() {
        SelectItem[] data = new SelectItem[branchesForCombobox.size()];
        for (int i = 0; i < branchesForCombobox.size(); i++) {
            data[i] = new SelectItem(branchesForCombobox.get(i).getId(), branchesForCombobox.get(i).getNazov());
        }
        return data;
    }
    */




    /* getters and setters */

    /*
    public SelectItem[] getBranchesOptions() {
        return branchesOptions;
    }

    public void setBranchesOptions(SelectItem[] branchesOptions) {
        this.branchesOptions = branchesOptions;
    }

    public void setSelectedOption(SelectItem selectedOption) {
        this.selectedOption = selectedOption;
    }

    public SelectItem getSelectedOption() {
        return selectedOption;
    }
    */

    public ArrayList<PobockaDTO> getBranchesForCombobox() {
        return branchesForCombobox;
    }

    public void setBranchesForCombobox(ArrayList<PobockaDTO> branchesForCombobox) {
        this.branchesForCombobox = branchesForCombobox;
    }

    public ArrayList<ZoznamLiekovDTO> getListOfMedicines() {
        return listOfMedicines;
    }

    public void setListOfMedicines(ArrayList<ZoznamLiekovDTO> listOfMedicines) {
        this.listOfMedicines = listOfMedicines;
    }

    public PobockaDTO getSelectedBranch() {
        return selectedBranch;
    }

    public void setSelectedBranch(PobockaDTO selectedBranch) {
        this.selectedBranch = selectedBranch;
    }

    public ZoznamLiekovDTO getSelectedItem() {
        return selectedItem;
    }

    public void setSelectedItem(ZoznamLiekovDTO selectedItem) {
        this.selectedItem = selectedItem;
    }

    public int getSelected_id() {
        return selected_id;
    }

    public void setSelected_id(int selected_id) {
        this.selected_id = selected_id;
    }
}

EJB:

/**
 * @author Sajmon
 */

package EJBs;

import DTOs.PobockaDTO;
import DTOs.ZoznamLiekovDTO;
import OraclDAO.OracleZoznamLiekovDAO;
import java.io.Serializable;
import java.util.ArrayList;
import javax.ejb.Stateless;

@Stateless
public class ZoznamLiekovEJB implements Serializable {

    private OracleZoznamLiekovDAO dao = new OracleZoznamLiekovDAO();


    public ArrayList<ZoznamLiekovDTO> getLists() {
        return dao.getListOfMedicines();
    }

    public ArrayList<PobockaDTO> getBranches() {
        return dao.getBranchesForCombobox();
    }
}

DAO:

/**
 * @author Sajmon
 */

package OraclDAO;

import DTOs.PobockaDTO;
import DTOs.ZoznamLiekovDTO;
import OraclDAOFactory.OracleDAOFactory;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class OracleZoznamLiekovDAO implements Serializable {

    private String SELECT_ALL = "SELECT Z.id_zoznamu, P.nazov_pobocky, L.nazov_lieku FROM Zoznam_liekov Z "
            + "JOIN Pobocka P ON (Z.id_pobocky = P.id_pobocky)"
            + "JOIN Liek L ON (Z.id_lieku = L.id_lieku)";
    private String SELECT_BRANCHES = "SELECT DISTINCT P.id_pobocky, P.nazov_pobocky FROM Zoznam_liekov Z JOIN Pobocka P ON (Z.id_pobocky = P.id_pobocky)";


    public OracleZoznamLiekovDAO() {

    }

    public ArrayList<PobockaDTO> getBranchesForCombobox() {

        ArrayList<PobockaDTO> data = new ArrayList<PobockaDTO>();
        PobockaDTO item;
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        try {
            con = OracleDAOFactory.getOracleDatabaseConnection();
            ps = con.prepareStatement(SELECT_BRANCHES);
            rs = ps.executeQuery();
            while (rs.next()) {
                item = new PobockaDTO();
                item.setId(rs.getInt(1));
                item.setNazov(rs.getString(2));
                data.add(item);
            }
            System.out.println("Data imported to list successfully.");
        }
        catch (SQLException ex) {
            Logger.getLogger(OracleZoznamLiekovDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally {
            if (con != null) {
                try {
                    con.close();
                }
                catch (SQLException ex) {
                    Logger.getLogger(OracleZoznamLiekovDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        return data;
    }


    public ArrayList<ZoznamLiekovDTO> getListOfMedicines() {

        ArrayList<ZoznamLiekovDTO> data = new ArrayList<ZoznamLiekovDTO>();
        ZoznamLiekovDTO item;

        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        try {
            con = OracleDAOFactory.getOracleDatabaseConnection();
            ps = con.prepareStatement(SELECT_ALL);
            rs = ps.executeQuery();
            while (rs.next()) {
                item = new ZoznamLiekovDTO();
                item.setId(rs.getInt(1));
                item.getPobocka().setNazov(rs.getString(2));
                item.getLiek().setNazov(rs.getString(3));
                data.add(item);
            }
            System.out.println("List of Medicines imported successfully.");

        } 
        catch (SQLException ex) {
            Logger.getLogger(OracleZoznamLiekovDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally {
            if (con != null) {
                try {
                    con.close();
                } 
                catch (SQLException ex) {
                    Logger.getLogger(OracleZoznamLiekovDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        return data;
    }
}

Y XHTML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui" 
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Zoznam liekov - prehľad</title>
        <link rel="stylesheet" type="text/css" href="../style.css" />
    </h:head>
    <h:body>
        <div id="out">
        <h:form id="mainForm">
            <p:selectOneMenu value="#{zoznamLiekovBean.selected_id}" required="true" effect="fade" id="zoznamComboBox">
                <f:selectItems value="#{zoznamLiekovBean.branchesForCombobox}" var="itm" itemLabel="#{itm.nazov}" itemValue="#{itm.id}"/>
            </p:selectOneMenu>
            <p:commandButton immediate="true" styleClass="submitClass" value="Generuj zoznam" update="dialogText" actionListener="#{zoznamLiekovBean.test()}"/>
            <p:dataTable style="width: 1100px" widgetVar="zoznamLiekovTable" selection="#{zoznamLiekovBean.selectedItem}" selectionMode="single" rowKey="#{item.id}" var="item" value="#{zoznamLiekovBean.listOfMedicines}" rows="5" rowsPerPageTemplate="5,10,15,20"
                         paginator="true" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink}">
                <p:column>
                    <f:facet name="header">ID:</f:facet>
                    <h:outputText value="#{item.id}"/>
                </p:column>

                <p:column>
                    <f:facet name="header">Pobočka:</f:facet>
                    <h:outputText value="#{item.pobocka.nazov}"/>
                </p:column>

                <p:column>
                    <f:facet name="header">Liek:</f:facet>
                    <h:outputText value="#{item.liek.nazov}"/>
                </p:column>
            </p:dataTable>

            <p:dialog widgetVar="test" showEffect="explode" hideEffect="explode">
                <h:outputText id="dialogText" value="#{zoznamLiekovBean.selected_id}"/>
            </p:dialog>
        </h:form>
        </div>
    </h:body>
</html>
hola man, agregó respuesta más rápido que yo. esta es la razón por la que se retira. 🙂

OriginalEl autor Simon Dorociak | 2012-04-27

1 Comentario

  1. 4

    Quitar immediate="true" de la commandButton. Va a saltar todo el Aplicar el Valor de la Solicitud de la fase de Actualización del Modelo del valor de la fase con eso. Es por eso que su valor es siempre null o 0.

    Compruebe esto hacia fuera

    OriginalEl autor Fallup

Dejar respuesta

Please enter your comment!
Please enter your name here