在Seam / JSF中验证失败时导航

时间:2008-10-08 22:32:05

标签: java rest jsf seam

我和Seam(2.0.2.SP1)一起玩了几个星期,我已经把大部分的基础知识搞定了,但是我没有找到一个像样的解决方案

假设我在/foo.xhtml有一个表单,其中包含重写规则,以便/foo.seam?id=<fooId>之类的网址转换为/foo/<fooId>。表单上有一个commandButton,其行为为#{fooHome.update}。我在/foo.page.xml中也有一个导航规则,在成功发布POST后重定向回一个很好的,书签友好的GET:

<navigation from-action="#{fooHome.update}">
    <rule if-outcome="updated">
        <redirect view-id="/foo.xhtml">
            <param name="id" value="#{fooHome.instance.id}"/>
        </redirect>
    </rule>
</navigation>

问题是当发生验证错误时,导航规则被跳过,我在POST后最终到/foo

我的问题:有没有办法重定向验证错误,因此我最终得到/foo/<fooId>的GET请求,而不是POST /foo

我尝试在fooHome中滚动我自己的验证方法,返回“失败”的结果,但我真的不希望无效数据超过验证阶段(因此进入当前对话)。

1 个答案:

答案 0 :(得分:1)

您通常会在验证失败时重新显示相同的视图,而不是重定向。假设您使用UrlRewrite作为重写规则,也许您可​​以使用出站规则,以便在这种情况下仍然显示 / foo / {fooId} URL。