如何通过验证来持久保存JSF视图参数

时间:2011-10-24 03:47:20

标签: jsf-2 primefaces

我将JSF 2.0 / CDI和PrimeFaces 2.2.1用于许多CRUD表单,让用户通过单击数据表中的链接来查看或更新现有实体的属性,其中实体的标识符是作为视图参数传递给CRUD表单。我在PrimeFaces InputText字段中的CRUD表单上显示实体的ID(通常只是一个整数),readonly属性设置为true(因为我不能让它们更改它),因此用户知道他们正在编辑哪个实体。 CRUD表单的支持bean是RequestScoped,除非验证失败,它才能正常工作。在这种情况下,视图参数的值将丢失,因此在验证失败时,实体ID字段中会显示0。

我能够在隐藏字段中维护实际的实体ID,以便在验证成功后可以更新数据库,但是我无法找到在可见字段中维护值的方法验证失败后的某种形式。理想情况下,InputText字段将其功能保留为输入和验证字段,即使其readonly(或禁用)属性设置为true,这将让我完全放弃隐藏字段。但似乎我不能让它以这种方式工作。除了制作支持bean ConversationScoped之外的任何建议,我宁愿避免吗?

1 个答案:

答案 0 :(得分:1)

实际上,在谷歌搜索中说明我正在寻找的内容之后,我在下面的链接中发现了一个新颖的建议,似乎干净利落。我没有使实体ID字段只读或禁用,而是让它保持启用状态,但一旦获得焦点就会将其模糊。我能够摆脱隐藏的字段,用户无法更改值,并且它在验证失败后仍然存在。

<p:inputText id="entid" value="#{RequestBean.entityID}" onfocus="blur();" />

http://www.codingforums.com/archive/index.php/t-1738.html