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