我使用参数创建页面表单,告诉他们完成后返回的位置。支持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
变量的Flash存储不再可用。如果有人能告诉我如何解决这个问题,这将是我的首选解决方案。
当然,如果没有immediate="true"
属性,则永远不会调用该操作,因为表单无法通过验证。另一种解决方案是以某种其他方式忽略验证。
我查看了OmniFaces <o:ignoreValidationFailed>
标签,它似乎做了我想要的,但我不想为这个标签导入整个库。但是,如果没有其他简单的方法可以解决这个问题,那就是我要做的。