2014-05-15 48 views
1

我有一個問題:數據表顯示對話框

這是我的TesztBean.java:

import java.io.Serializable; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 
import javax.annotation.PostConstruct; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.bean.ViewScoped; 
import org.primefaces.event.RowEditEvent; 
import org.primefaces.model.LazyDataModel; 


@ManagedBean 
@SessionScoped 

public class TesztBean implements Serializable{ 

    String URL = "jdbc:mysql://localhost:3306/osszesito?useUnicode=yes&characterEncoding=UTF-8"; 
    String USER = "USER";   
    String PASSWORD = "PASSWD"; 
    String DRIVER = "com.mysql.jdbc.Driver"; 

    private List<TesztSetGet> filteredOsszesito; 
    private List<TesztSetGet> values; 
    private TesztSetGet select; 



    public TesztSetGet getSelect() { 
     return select; 
    } 

    public void setSelect(TesztSetGet select) { 
     this.select = select; 
    } 




    @PostConstruct 
    public void init() { 
     try { 
      values = selectTesztTable(); 
     } catch (SQLException e) { 

      e.printStackTrace();  
     } 
    } 


    public Connection getDBConnection() { 

     Connection dbConnection = null; 

     try { 

      Class.forName(DRIVER); 
      dbConnection= DriverManager.getConnection(URL, USER, PASSWORD); 
      System.out.println("Connection completed."); 

     } catch (SQLException e) { 

      System.out.println(e.getMessage()); 

     }catch(ClassNotFoundException cnfe){ 

      cnfe.printStackTrace(); 
      System.out.println(cnfe.getMessage()); 
      System.exit(-1); 

     } 

     return dbConnection; 
    } 



    public List<TesztSetGet> selectTesztTable() throws SQLException{ 

     ResultSet rs = null; 
     PreparedStatement pst = null; 
     Connection con = getDBConnection(); 

     String stm = "select * from teszt order by age"; 

     List<TesztSetGet> records = new ArrayList<TesztSetGet>(); 


     try { 

      pst = con.prepareStatement(stm); 
      pst.execute(); 
      rs = pst.getResultSet(); 

     while(rs.next()){ 

      TesztSetGet objectMeghiv = new TesztSetGet(); 

      objectMeghiv.setId(rs.getInt(1));    
      objectMeghiv.setName(rs.getString(2)); 
      objectMeghiv.setAge(rs.getInt(3)); 
      objectMeghiv.setKapcsolatfelvetel_megtortent(rs.getString(4));    
      objectMeghiv.setLevelkuldesenek_datuma(rs.getString(5)); 
      objectMeghiv.setKepzes_kezdete(rs.getString(6)); 
      objectMeghiv.setKepzes_vege(rs.getString(7)); 
      objectMeghiv.setMagyarazat(rs.getString(8));     
      records.add(objectMeghiv); 

     } 

     return records; 


     }catch (SQLException e) { 
      e.printStackTrace();   
     }catch (Exception e) { 
      e.printStackTrace();   
     }finally{ 

      rs.close(); 
      pst.close();    
      con.close(); 

    } 

     return records; 

    } 


    public List<TesztSetGet> getValues() { 

     return values; 

    } 



    public void update(RowEditEvent event) { 

     TesztSetGet edittedObject = (TesztSetGet) event.getObject();   

     Connection connection = null; 
     PreparedStatement pst = null; 
     ResultSet rs = null; 

     String sql = "update teszt set kapcsolatfelvetel_megtortent=?, levelkuldes_datuma=?, kepzes_kezdete=?, kepzes_vege=?, megjegyzes=? where id=?"; 

     try{ 

      connection = getDBConnection();                  
      pst = connection.prepareStatement(sql); 



      pst.setString(1, edittedObject.getKapcsolatfelvetel_megtortent()); 
      pst.setString(2, edittedObject.getLevelkuldesenek_datuma()); 
      pst.setString(3, edittedObject.getKepzes_kezdete()); 
      pst.setString(4, edittedObject.getKepzes_vege()); 
      pst.setString(5, edittedObject.getMagyarazat()); 
      pst.setInt(6, edittedObject.getId()); 

      pst.executeUpdate(); 
      pst.close(); 
      connection.close(); 

     }catch(SQLException se){ 
      se.printStackTrace(); 
      se.getMessage(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
      e.getMessage(); 
     }  


    } 

    public List<TesztSetGet> getFilteredOsszesito() { 
     return filteredOsszesito; 
    } 

    public void setFilteredOsszesito(List<TesztSetGet> filteredOsszesito) { 
     this.filteredOsszesito = filteredOsszesito; 
    } 

} 

這是我的TesztSetGet.java:

public class TesztSetGet { 

    private int id;  
    private String name; 
    private int age; 
    private String kapcsolatfelvetel_megtortent; 
    private String levelkuldesenek_datuma; 
    private String kepzes_kezdete; 
    private String kepzes_vege; 
    private String magyarazat; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public String getKapcsolatfelvetel_megtortent() { 
     return kapcsolatfelvetel_megtortent; 
    } 

    public void setKapcsolatfelvetel_megtortent(String kapcsolatfelvetel_megtortent) { 
     this.kapcsolatfelvetel_megtortent = kapcsolatfelvetel_megtortent; 
    } 

    public String getLevelkuldesenek_datuma() { 
     return levelkuldesenek_datuma; 
    } 

    public void setLevelkuldesenek_datuma(String levelkuldesenek_datuma) { 
     this.levelkuldesenek_datuma = levelkuldesenek_datuma; 
    } 

    public String getKepzes_kezdete() { 
     return kepzes_kezdete; 
    } 

    public void setKepzes_kezdete(String kepzes_kezdete) { 
     this.kepzes_kezdete = kepzes_kezdete; 
    } 

    public String getKepzes_vege() { 
     return kepzes_vege; 
    } 

    public void setKepzes_vege(String kepzes_vege) { 
     this.kepzes_vege = kepzes_vege; 
    } 

    public String getMagyarazat() { 
     return magyarazat; 
    } 

    public void setMagyarazat(String magyarazat) { 
     this.magyarazat = magyarazat; 
    } 

} 

這是我的JSF頁:

<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>Teszt</title>   
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>       
      <link rel="stylesheet" type="text/css" href="style.css"/>    
    </h:head> 

    <ui:debug /> 
    <h:form id="form"> 
     <p:fieldset legend="Teszt:"> 
      <p:dataTable id="dataTableTeszt" value="#{TesztBean.values}" var="c" paginator="true" rows="25" editable="true" filteredValue="#{TesztBeanBean.filteredOsszesito}" scrollable="true" scrollWidth="1500" scrollHeight="550" 
         paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
         paginatorPosition="bottom" rowsPerPageTemplate="5,10,15,20,30,40,50"> 


         <p:column style="width: 60px; text-align: center" headerText="Show"> 
          <p:commandButton id="addCategoryButton" value="Show" onclick="categoryDialog.show();" action="#{TesztBean.values}" update=":form:grid"/> 
         </p:column> 

         <p:column style="width: 130px; text-align: center" filterBy="#{c.id}" filterMatchMode="contains"> 
          <f:facet name="header">ID:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.id}" style="width: 130px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.id}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column> 


         <p:column style="width: 130px; text-align: center" filterBy="#{c.name}" filterMatchMode="contains"> 
          <f:facet name="header">Name:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.name}" style="width: 130px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.name}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column> 

         <p:column style="width: 130px; text-align: center" filterBy="#{c.age}" filterMatchMode="contains" > 
          <f:facet name="header">Age:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.age}" style="width: 130px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.age}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column>  


         <p:column style="width: 230px; text-align: center" filterBy="#{c.kapcsolatfelvetel_megtortent}" filterMatchMode="contains" > 
          <f:facet name="header">Kapcsolatfelvétel megtörtént:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.kapcsolatfelvetel_megtortent}" style="width: 230px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.kapcsolatfelvetel_megtortent}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column>    

         <p:column style="width: 230px; text-align: center" filterBy="#{c.levelkuldesenek_datuma}" filterMatchMode="contains" > 
          <f:facet name="header">Levélküldés dátuma:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.levelkuldesenek_datuma}" style="width: 230px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.levelkuldesenek_datuma}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column> 

         <p:column style="width: 230px; text-align: center" filterBy="#{c.kepzes_kezdete}" filterMatchMode="contains" > 
          <f:facet name="header">Képzés kezdete:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.kepzes_kezdete}" style="width: 230px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.kepzes_kezdete}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column> 

         <p:column style="width: 230px; text-align: center" filterBy="#{c.kepzes_vege}" filterMatchMode="contains" > 
          <f:facet name="header">Képzés vege:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.kepzes_vege}" style="width: 230px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.kepzes_vege}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column> 

         <p:column style="width: 1000px; text-align: center" filterBy="#{c.magyarazat}" filterMatchMode="contains"> 
          <f:facet name="header">Megjegyzés:</f:facet>             
          <p:cellEditor> 
           <f:facet name="output"> 
            <h:outputText value="#{c.magyarazat}" style="width: 1000px; text-align: center"/> 
           </f:facet> 
           <f:facet name="input"> 
            <p:inputText value="#{c.magyarazat}"/> 
           </f:facet> 
          </p:cellEditor> 
         </p:column> 

     </p:dataTable> 
     </p:fieldset> 

     <p:dialog id="categoryDialog" header="Category Detail" widgetVar="categoryDialog" closeOnEscape="true" resizable="false" style="width:1000px; height: 500px;" showEffect="explode" hideEffect="bounce"> 

      <h:panelGrid id="grid" columns="2">        
        <h:outputText value="ID:"/> 
        <h:outputText value="#{TesztBean.select.id}"/> 
        <h:outputText value="Age:"/> 
        <h:outputText value="#{TesztBean.select.age}"/> 
        <h:outputText value="Kapcsolatfelvetel megtortent:"/> 
        <h:outputText value="#{TesztBean.select.kapcsolatfelvetel_megtortent}"/> 

      </h:panelGrid> 



     </p:dialog> 


    </h:form> 

</html> 

在這張圖片中,你可以ee值我的問題:

enter image description here

如果我點擊查看按鈕,比在彈出的窗口沒有價值,爲什麼呢?

非常感謝你,

***************UPDATE*************** 

修改:

JSF頁面:

<p:column style="width: 60px; text-align: center" headerText="Edit"> 
          <p:commandButton id="addCategoryButton" value="Show" oncomplete="categoryDialog.show();" update=":form:grid :form:categoryDialog" actionListener="#{TesztBean.select(c)}"/> 
         </p:column> 

TEsztBean.java:

private TesztSetGet select; 


    public TesztSetGet getSelect() {     
     return select;   
    } 

    public void setSelect(TesztSetGet value) { 
     this.select = value;   
    } 

我看到,在服務器出現是例外:

收到 'javax.el.MethodNotFoundException' 調用時動作 聽衆 '#{TesztBean.select(C)}' 的成分 'addCategoryButton' |#] [#| 2014-05-15T16:24: 30.443 + 0200 |嚴重|甲骨文glassfish3.1.2 | javax.faces.event | _ThreadID = 75; _ThreadName =螺紋-2; | javax.el.MethodNotFoundException: 方法Select未找到

[#| 2014-05 -15T16:24:30.444 + 0200 |嚴重|甲骨文glassfish3.1.2 | javax.enterprise.resource.webcontainer.jsf.context | _ThreadID = 75; _ThreadName =螺紋-2; | JSF1073: javax.faces.event.AbortProcessingException INVOKE_APP的處理過程中抓住了LICATION 5:UIComponent-ClientId = form:dataTableTeszt, Message =方法選擇未找到|#]

[#| 2014-05-15T16:24:30.444 + 0200 | SEVERE | oracle-glassfish3.1.2 | javax。 enterprise.resource.webcontainer.jsf.context | _ThreadID = 75; _ThreadName =線程2; |方法 選擇沒有找到

回答

3

你有兩個問題,第一你在哪裏選定項目發送到你的bean?他們有很多方法可以做到這一點。

您可以通過添加這種兩個attribut使用RowSelection您的數據表:

selection="#{TesztBean.values}" selectionMode="single" 

或修改您的命令按鈕,添加一個ActionListener這樣的:

actionListener="#{TesztBean.selectForDialog(c)}" /> 

而且你的bean裏面添加:

public void selectForDialog(TesztSetGet value){ 
    this.select = value; 
} 

你的第二個問題是你沒有更新在你的對話中,他表現得很好,但空虛,因爲他沒有刷新,並具有正確的價值。

<p:commandButton id="addCategoryButton" value="Show" oncomplete="categoryDialog.show();" actionListener="#{TesztBean.selectForDialog(c)}" update=":form:grid :form:categoryDialog"/> 

而且使用oncomplete,而不是onclick或同時開啓您所設定的數據之前的對話框。

+0

我修改了代碼,但它不工作,我得到錯誤/異常:'javax.el.MethodNotFoundException'爲組件'addCategoryButton'調用動作偵聽器'#TesztBean.select(c)}'時。 #] javax.faces.event.AbortProcessingException在INVOKE_APPLICATION 5處理期間被捕獲:UIComponent-ClientId = form:dataTableTeszt,Message =方法select not found |#]方法選擇未找到 – fuge007

+0

親愛的朋友,它的工作原理:) 謝謝,謝謝你,謝謝 – fuge007

+0

不客氣:) –