简体   繁体   English

素数 + java + mysql

[英]primefaces + java + mysql

I have a problem.我有个问题。 Here it is my code ( EDITED ):这是我的代码(已编辑):

<?xml version="1.0" encoding="UTF-8"?>
<!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>Osszesito</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>

    <p:fieldset legend="Osszesito:">  
        <p:dataTable id="dataTable" value="#{OsszesitoBean.values}" var="c" paginator="true" rows="25" editable="true" filteredValue="#{OsszesitoBean.filteredOsszesito}>

            <p:ajax event="rowEdit" listener="#{OsszesitoBean.update(event)}"/>
                        <p:column>
                            <f:facet name="header">ID:</f:facet>
                            <h:outputText value="#{c.id}"/>                                                             
                        </p:column>            

                        <p:column filterBy="#{c.kod}" filterMatchMode="contains>
                            <f:facet  name="header">kod:</f:facet>                                                                            
                            <h:outputText value="#{c.okod}"/>                                                            
                        </p:column>

                        <p:column headerText="Edit">
                            <p:rowEditor/>
                        </p:column>

                        <p:column filterBy="#{c.name}" filterMatchMode="contains>
                            <f:facet name="header">Name:</f:facet>                                                
                            <h:outputText value="#{c.name}"/>                            
                        </p:column>            
                        .
                        .
                        .
                        .
        </p:dataTable>
     </p:fieldset> 
    </h:form>   
</html> 

Here it is my java set and get class:这是我的 java set 和 get 类:

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;

public class OsszesitoSetGet {

   private int id;    
   private String kod;
   private String name;       
   .
   .
   .
   .

public int getId() {
        return id;
    }

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

    public String getKod() {
        return kod;
    }

    public void setKod(String kod) {
        this.kod = kod;
    }

    public String getName() {
        return name;
    }

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


   public void postProcessXLS(Object document) {

        HSSFWorkbook wb = (HSSFWorkbook) document;
        HSSFSheet sheet = wb.getSheetAt(0);
        CellStyle style = wb.createCellStyle();
        style.setFillBackgroundColor(IndexedColors.AQUA.getIndex());


        for (Row row : sheet) {
            for (Cell cell : row) {
                cell.setCellValue(cell.getStringCellValue().toUpperCase());
                cell.setCellStyle(style);

            }
        }

    }
 }

Here it is bean class ( EDITED ):这是 bean 类(已编辑):

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 org.primefaces.event.RowEditEvent;


@ManagedBean @SessionScoped

public class OsszesitoBean {

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


    private List<OsszesitoSetGet> values;
    private List<OsszesitoSetGet> filteredOsszesito;

    @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<OsszesitoSetGet> selectTesztTable() throws SQLException{

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

        String stm = "select * from teljes_osszesito";

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


        try {

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

         while(rs.next()){

            OsszesitoSetGet objectMeghiv = new OsszesitoSetGet();

            objectMeghiv.setId(rs.getInt(1));            
            objectMeghiv.setKod(rs.getString(2)); 
            objectMeghiv.setName(rs.getString(3)); 
            .
            .
            .
            .
            .
            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<OsszesitoSetGet> getValues() { 

        return values; 

    }



    public void update(RowEditEvent event) {

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

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

        String sql = "update teljes_osszesito set kod=?, name=?, .......... where id=?";

        try{

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


            pst.setString(1, edittedObject.getKod());
            pst.setString(2, edittedObject.getName());
            .
            .
            .
            .
            pst.setInt(28, edittedObject.getId());

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

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


    }

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

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

}

The codes work, but when i filter something column, then the name column doesn't work, but the kod column filter work.代码有效,但是当我过滤某些列时,名称列不起作用,但 kod 列过滤器起作用。 The number colums work, the name/string columns doesn't work.数字列有效,名称/字符串列无效。

why doesn't work name column filter?为什么名称列过滤器不起作用?

thank you谢谢你

You need to set a filteredValue object on your bean.您需要在您的 bean 上设置一个 filtersValue 对象。

filteredValue="#{OsszesitoBean.filteredValues}"  (on your p:datatable)

private List<OsszesitoSetGet> filteredValues; (on your java bean, + getters/setters)

Refer to: http://www.primefaces.org/showcase/ui/datatableFiltering.jsf参考: http : //www.primefaces.org/showcase/ui/datatableFiltering.jsf

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM