【发布时间】:2009-11-28 13:59:06
【问题描述】:
我正在创建一个 JSF 应用程序。我有一些来自数据库的项目(例如产品),我想创建一个 JSF 页面来编辑特定项目,即:
- 它应该显示选定的项目属性并允许用户编辑它们,
- 我希望能够通过一些链接查看此项目,
- 我希望 JSF 以某种方式记住我正在编辑特定项目(例如,在编辑其数据后它应该显示该项目页面)
我在存储/传递正在编辑的项目的 ID 时遇到问题。我看到在示例 JSF CarDemo 应用程序中,它们存储在会话中查看的项目(汽车)。我不想这样做,因为我希望用户能够在单独的浏览器选项卡中编辑不同的元素。
我尝试了几种方法:
- 在URL中使用了一些(例如
itemId)GET参数,但是编辑数据后很难返回项目页面(faces-config.xml中的to-view-id字段只能包含常量), - 使用一些支持 bean 托管属性并在每个超链接和表单中传递其值(通过添加隐藏字段)
我仍然无法消除的问题是,如果在编辑某些项目属性后我尝试保存它们并且验证(例如f:validateLength)失败,则重新加载页面但正在编辑的项目的 ID 丢失。我认为在创建 Web 应用程序(例如用户版、商店产品版)时这是相当标准的任务,因此肯定应该有一些解决方案。
提前致谢。
【问题讨论】: