【发布时间】:2010-09-16 03:47:06
【问题描述】:
我已经用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>
问题是当验证错误发生时,导航规则被跳过,我在 POST 之后最终到达/foo。
我的问题:有没有办法在验证错误时重定向,所以我最终得到了对 /foo/<fooId> 的 GET 请求,而不是对 /foo 的 POST?
我尝试在 fooHome 中滚动我自己的验证方法,返回“失败”结果,但我真的不希望无效数据通过验证阶段(从而进入当前对话)。
【问题讨论】: