我创建带有参数的页面表单,该参数告诉他们完成后返回的位置。支持 bean 是@ReqeuestScoped
并且包括以下内容:
<f:metadata>
<f:viewParam name="return" value="#{createGroup.paramReturn}" />
</f:metadata>
该表单具有带有验证器的字段,因此取消按钮必须跳过验证。因此,取消按钮如下所示:
<p:commandButton value="Cancel"
action="#{createGroup.doCancel}"
immediate="true"
/>
该doCancel()
方法的目的是进入 Flash 范围并返回使用setParamReturn
方法设置的值。
问题在于immediate="true"
属性是其中包含变量的闪存存储paramReturn
不再可用。如果有人能告诉我如何解决这个问题,这将是我的首选解决方案。
当然,如果没有该immediate="true"
属性,则永远不会调用该操作,因为表单无法通过验证。另一种解决方案是通过其他方式忽略验证。
我查看了 OmniFaces<o:ignoreValidationFailed>
标记,它似乎可以满足我的要求,但我不想只为这个标记导入整个库。但是,如果没有其他简单的方法来解决这个问题,我会这样做。