首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSF:将选定的变量值保存在数据表中以供下一视图使用

JSF:将选定的变量值保存在数据表中以供下一视图使用
EN

Stack Overflow用户
提问于 2013-07-03 21:47:29
回答 1查看 2.1K关注 0票数 0

我有一个数据表:

代码语言:javascript
运行
复制
    <h:dataTable binding="#{table}" value="#{chooseKittens.kittenList}">
      <h:column>
        <p:commandLink value="#{chooseKittens.kittenList[table.rowIndex]}" action="#{chooseKittens.petKitten}"/>
      </h:column>
    </h:dataTable>

dataTable是一系列链接,可将您带到不同的页面。但是,当我转到不同的页面时,我希望保存所单击的命令链接的值,以便可以在后续视图中显示它。有没有办法在没有SessionScope的情况下做到这一点?我查看了t:saveState,但我不确定如何仅保存在Datatable中单击的变量。如果SessionScope是唯一可用的东西,有没有办法在不同的作用域中创建kittenList?(当在数据库中添加新的小猫时,小猫列表应该会更改,因此它应该在RequestScope或ViewScope中)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-03 23:25:14

如果您想在视图之间共享信息,您可以考虑两种通常使用的替代方案。

以GET参数的形式将信息

  1. Pass到下一个视图

在本例中,您将使用JSF组件生成一个普通的导航链接,并将一个查询参数附加到该链接,如下所示:

在接收页面中,可通过以下方式获取该参数:

What can and be used for?

  • Pass Flash可以在重定向视图的信息中找到更多优秀的信息

在本例中,您将在命令组件的操作方法中执行重定向,并将使用Flash对象将必要的数据附加到目标视图:

使用

public String next() { //do business job FacesContext.getCurrentInstance().getExternalContext().getFlash().put("kitten",selectedKitten);return "/view-kitten?faces-redirect=true";}

它将通过使用#{flash.kitten}的EL或通过编程使用FacesContext.getCurrentInstance().getExternalContext().getFlash().get("kitten")在目标视图中可用。

可以在JSF2.0 - How to get the values in other jsf page's bean in request scope.中找到扩展的示例

最后要注意的是:不要滥用HTTP session。你不应该用其他地方的信息污染会话。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17449754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档