[英]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.