【发布时间】:2012-10-31 11:46:15
【问题描述】:
我的 JSF 页面上有一个数据表,感谢 BalusC 和 Odelya,它会在页面加载时动态填充。
但是现在当我尝试刷新 JSF 页面以从数据库中检索更新的数据时,我没有在 Datatable 中获取更新的数据。
我已经浏览了以下链接,但无法理解其中的细微差别..!
【问题讨论】:
我的 JSF 页面上有一个数据表,感谢 BalusC 和 Odelya,它会在页面加载时动态填充。
但是现在当我尝试刷新 JSF 页面以从数据库中检索更新的数据时,我没有在 Datatable 中获取更新的数据。
我已经浏览了以下链接,但无法理解其中的细微差别..!
【问题讨论】:
您的 bean 范围是否配置为 Session?
您是否尝试将其范围更改为 Request?
填写完结果集后别忘了关闭连接,必须是CachedRowSet
这是 Core JavaServer Faces 书中的一个示例:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.enterprise.context.RequestScoped;
import javax.sql.DataSource;
import javax.sql.rowset.CachedRowSet;
@ManagedBean
@RequestScoped
public class CustomerBean {
@Resource(name = "jdbc/mydb")
private DataSource ds;
public ResultSet getAll() throws SQLException {
Connection conn = ds.getConnection();
try {
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM Customers");
CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl();
crs.populate(result);
return crs;
} finally {
conn.close();
}
}
}
【讨论】:
'@RequestScoped' should be added to refresh your bean File to get the new data.
【讨论】: