2012-04-27 13 views
-1

この問題があります。 カスタムのためにselectOneMenuを作成して、いくつかのデータを選択したかったのです。しかし、それは動作していないと私は本当に理由を知らない。私はこの問題でccaを5時間過ごしました。私は必死だ。 だから、いくつかの私のコード:p:selectonemenuが機能しない(JSF)

しかし、私はselectonemenuからいくつかの項目を選択します、selected_idはまだ、まだまだ0です。私はほとんどすべてをやろうとしましたが、結果はありませんでした。

私はこれを試してみました:

<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 ... */ 

また、私は[]のモデルが、結果は同じだったのSelectItemでこれを試してみました。うまくいかない。

<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; 

が、私は常にnull例外が常に返されたselectonemenuの値は、のようなオブジェクトを使用し、まだ0:

は、私は同じようにそれを試してみました。だから、私はこれについて何かアドバイスがありがとう。 ありがとう

brw。バッキングBeanはViewScopedであり、DAOからのデータが正しく返されるため、コンポーネントselectonemenuにいくつかのバグがあります。


おかげBalusCので、ここで私の実装です

/** 
* @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; 
    } 
} 

そして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> 
+0

0ρяσѕρєя[email protected]である理由です。これが私がそれを取り除いた理由です。 :) – Sajmon

答えて

4

commandButtonからimmediate="true"を削除します。 申請値の相を適用する - モデルの値の更新フェーズをすべてスキップしています。あなたの値は常にnullまたは私よりやあ男、あなたは追加の答え早く

Check this out

関連する問題