在早期的项目中,当取消某些东西时,我经常使用 Seam 2 中的 s:button 或 s:link,因为它不会提交表单,因此不会发生模型更新。
现在我切换到 WELD + Seam 3 并且再也找不到它了 - 我只是盲目还是我必须使用其他东西?
格齐弗
在早期的项目中,当取消某些东西时,我经常使用 Seam 2 中的 s:button 或 s:link,因为它不会提交表单,因此不会发生模型更新。
现在我切换到 WELD + Seam 3 并且再也找不到它了 - 我只是盲目还是我必须使用其他东西?
格齐弗
您可以通过将immediate
属性设置true
为h:commandButton
.
来自 MyFaces 维基:
immediate 属性可用于实现以下效果:
允许 commandLink 或 commandButton 将用户导航到另一个页面,而无需处理当前屏幕输入字段中的任何数据。特别是,即使当前存在验证错误,这也允许进行导航。“取消”按钮通常属于此类。
允许 commandLink 或 commandButton 触发后端逻辑,同时忽略屏幕上某些字段的验证。这是上述项目的更通用版本。
将一个或多个输入组件设置为“高优先级”进行验证,这样如果其中任何一个无效,则不会对同一页面中的任何“低优先级”输入组件执行验证。这可以减少显示的错误消息的数量。
我找到了一种方法来处理它,方法是使用 RichFaces 4 中的 commandButton 并将 bypassUpdates 设置为 true:
<a4j:commandButton value="Cancel" action="#{myHandler.cancel}"
bypassUpdates="true" render="myTable" />
对我来说这个解决方案没问题,因为我已经在使用 RichFaces 4 - 但我仍然感兴趣,如何使用标准 JSF 2.0 解决这个问题?