1

我已经使用Seam (2.0.2.SP1) 玩了几个星期了,我已经掌握了大部分基础知识,但是我还没有想出一个像样的解决方案来解决以下问题。

假设我有一个位于 的表单/foo.xhtml,其中包含一个重写规则,以便将类似/foo.seam?id=<fooId>的 URL 转换为/foo/<fooId>. 表单上有commandButton一个 动作#{fooHome.update}。我还有一个导航规则,在/foo.page.xml成功发布后重定向回一个漂亮的、书签友好的 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>

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

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

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

4

1 回答 1

1

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

于 2008-10-11T23:12:52.713 回答