向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
。我想让这个list
在UpdateAuthor.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范围参数页面重新加载?