在这种情况下如何重定向



author.setFindwithid()提交数据:

<h:form>
            <h:outputLabel value="Id of to Be Edited record"></h:outputLabel>
            <h:inputText value="#{author.id}"></h:inputText>
            <h:commandButton value="submit" action="#{author.setFindwithid()}"/>
        </h:form>

这是author.setFindwithid()

的定义
public String setFindwithid() throws SQLException{
        String query = "SELECT * FROM authors WHERE id=?";
        PreparedStatement ps = con.prepareStatement(query);
        ps.setInt(1, this.getId());
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            Author tmp = new Author();
            tmp.setId(rs.getInt("id"));
            tmp.setName(rs.getString("name123"));
            list.add(tmp);
        }
        return "UpdateAuthor.xhtml";
    }

可以看到,我有一个list,我也重定向到UpdateAuthor.xhtml。我想让这个listUpdateAuthor.xhtml的范围内可用,以便list的值可以显示在视图中。我该怎么做呢?

你可以把List放在flash作用域中,这样它就会在重定向中保持活动:

在你的setFindwithid方法中:

FacesContext.getCurrentInstance().getExternalContext().getFlash().put("listName", list);

那么你就可以在UpdateAuthor.xhtml视图中引用它了:

#{flash.listName}

或者以编程方式在bean中获取:

List myList = (List) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("listName");
编辑:

正如BalusC所指出的,您可以确保List将保持在Flash范围内,即使在使用目标facelets中的以下调用刷新页面之后:

#{flash.keep.listName}

参见:

了解JSF2中的Flash作用域

如何保持JSF的flash范围参数页面重新加载?

相关内容

  • 没有找到相关文章

最新更新