繁体   English   中英

请求作用域bean JSF

[英]request scoped bean JSF

我有一个表格tables.jspx,它显示所有表格的dataTable,并具有createTable.jspx的链接; 当我创建一个新表时,它将返回tables.jspx,但不会显示带有新表的列表。 (tablesBean和createTableBean是请求范围)。 我遵循BalusC教程http://balusc.blogspot.com/2006/06/using-datatables.html懒惰地初始化getter中的表列表。 就我现在而言,如果我的bean是请求范围的对象,在请求完成之后是否应该销毁它? 导航来自tables.jspx-> createTable.jspx-> tables.jspx。 我希望在创建新表后返回表列表,以显示带有新表的新列表。 请帮助我了解我在做什么错。

这是我的代码,返回我在getter中的表列表(简化):

  public List getTables(){
    if(tables==null){ //lazy initialization for a request bean as recommended by BalusC
     //Return list of tables
    }

但如果我改变这一行if(tables==null)if(tables==null ||FacesContext.getCurrentInstance().getRenderResponse())

我的列表是在我从createTable.jspx返回时实现的,建议在Bean处于会话范围内时进行此更改,但这给我的dataPaginator和sortColumn函数带来了问题(因为当我对按列列出它会返回错误的编辑行,因为我在每一行中都有一个用于编辑和删除的链接)

因为您没有发布代码,所以我将使用上面链接的教程来解释可能发生的情况...

private void loadDataList() {

        // Do your "SELECT * FROM mydata" thing.
        try {
            dataList = dataDAO.list();
        } catch (DAOException e) {
            setErrorMessage(e.getMessage() + " Cause: " + e.getCause());
            e.printStackTrace();
        }
    }

您正确的说,将在这里创建并销毁请求范围的Bean tables ,但是每次构造它时,它都在调用上面列出的方法。 这将基于数据库中的当前数据重新初始化表。

如果应该使用createTable.jspx来修改数据库中的数据,则可能是未发生这些更新,或者请求bean正在过滤掉新数据。

暂无
暂无

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

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