Jsf 2 JSF2.0在inputHidden而不是outputLabel中传递值无效
我们是JSF新手,正在努力解决以下问题 我们有一个搜索页面,用户可以点击按钮进入详细信息页面。 到达此详细信息页面时,所选记录将正确显示 当用户编辑值时,验证器将生效。 自定义验证器检查两件事: -如果记录已在数据库中(唯一) -如果该值不是空的 当用户将当前值删除为空字符串并提交时,验证程序会说该值不允许为空 当用户将值更改回以前的值并提交时,验证程序应验证当前值并返回搜索页面 现在的问题是: 使用时:Jsf 2 JSF2.0在inputHidden而不是outputLabel中传递值无效,jsf-2,Jsf 2,我们是JSF新手,正在努力解决以下问题 我们有一个搜索页面,用户可以点击按钮进入详细信息页面。 到达此详细信息页面时,所选记录将正确显示 当用户编辑值时,验证器将生效。 自定义验证器检查两件事: -如果记录已在数据库中(唯一) -如果该值不是空的 当用户将当前值删除为空字符串并提交时,验证程序会说该值不允许为空 当用户将值更改回以前的值并提交时,验证程序应验证当前值并返回搜索页面 现在的问题是: 使用时: <h:outputLabel value="Supplier Id" /> &
<h:outputLabel value="Supplier Id" />
<h:outputLabel value="#{flash.keep.supplier.id}" />
一切正常。但我们希望对用户隐藏id并使用隐藏字段
移除outputLabel并使用时:
<h:inputHidden value="#{flash.keep.supplier.id}" />
我们的应用程序认为我们正在尝试插入一个新的供应商,而不是保存具有相同名称的现有供应商
我们在NetBeans开发环境中使用JSF2.0和GlassFish服务器3.1.2
bean的作用域是requestscope
源代码可从以下网站获得:
意见如下:
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你可能做错了。制作一个范围更长的新Bean来“记住”选择供应商
@RequestScoped
SupplierController
// Almost everything here
@SessionScoped
StatefulSupplierController
// State that needs to be saved
所以,用户更改了供应商或w/e,是时候返回搜索页面了。hiddeninput的功能是什么?如果你想保存一些东西,也许可以使用范围更长的bean?我们实际上必须放置updatelabel或hiddeninput的原因是,我们的应用程序似乎不记得搜索页面中的“choosen supplier”。我们被告知要尽量保持范围尽可能小。实际上,我们应该只记住在搜索页面和转到供应商详细信息页面之间选择的供应商。而且,当在编辑中出现问题时,验证程序应该恢复旧值并返回搜索页面。我们还希望注意并尊重搜索->详细信息和详细信息->搜索之间的Post redirect Get模式。所以真正的问题是,为什么这是有效的,而这是无效的