0

我们是 JSF 的新手,正在努力解决以下问题。

我们有一个搜索页面,用户可以在其中单击按钮转到详细信息页面。到达此详细信息页面时,已正确显示所选记录。

当用户编辑值时,验证器会启动。自定义验证器会检查两件事:-如果记录已经在数据库中(唯一)-如果值不为空

当用户删除当前值,为空字符串,提交时,验证器说该值不允许为空。

当用户将值改回之前的值并提交时,验证器应验证当前值并返回搜索页面。

现在问题如下: 使用时:

<h:outputLabel value="Supplier Id" />
<h:outputLabel value="#{flash.keep.supplier.id}" />

一切正常。但是我们想对用户隐藏 id 并使用隐藏字段。

删除 outputLabel 并使用时:

<h:inputHidden value="#{flash.keep.supplier.id}" />

我们的应用程序认为我们正在尝试插入一个新的供应商,而不是保存已经存在的同名供应商。

我们在 NetBeans 开发环境中使用 JSF 2.0、GlassFish Server 3.1.2。

bean 是 RequestScoped

源代码位于: https ://bitbucket.org/dasdan20/timereg4wb-web

视图位于: Web/suppliers/search.xhtml Web/suppliers/ addedit.xhtml

bean 和支持代码位于:src/task/SupplierTask.java src/task.validation/SupplierUniqueValidator src/domain/Supplier.java

数据库后端是 MySQL:可以在以下位置找到数据库的备份:src/MySQLDatabase

提前致谢

K&K

4

1 回答 1

0

你可能做错了。制作一个具有更长范围的新 Bean,以“记住”选定的供应商。

@RequestScoped
SupplierController
// Almost everything here

@SessionScoped
StatefulSupplierController
// State that needs to be saved
于 2012-10-07T19:31:36.187 回答