2008-10-08 124 views
1

我一直在玩Seam(2.0.2.SP1)几周,并且我掌握了大部分基础知识,但我还没有拿出一个体面的解决以下问题。Seam/JSF中的验证失败导航

假设我有一个表格/foo.xhtml,其重写规则使得像/foo.seam?id=<fooId>这样的URL转换为/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

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

+0

我的确在使用UrlRewrite,但似乎无法构建这样的出站规则。 使用当前视图(/ foo)作为操作,而不是重写的URL(/ foo/)。除非我错过了某些东西(完全可能),否则我看不到将转换为出站规则的方法。 – 2008-10-13 20:11:22