私は数週間Seam (2.0.2.SP1) をいじっており、基本的なことのほとんどを把握していますが、次のことに対するまともな解決策は思いつきませんでした。
にフォームがあり/foo.xhtml
、 のような URL/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>
問題は、検証エラーが発生したときです。その時点でナビゲーション ルールがスキップされ/foo
、POST の後になってしまいます。
私の質問: 検証エラーでリダイレクトする方法はあり/foo/<fooId>
ます/foo
か?
で独自の検証メソッドをロールバックしてfooHome
、「失敗」の結果を返してみましたが、無効なデータが検証フェーズを通過して (したがって、現在の会話に) 入りたくありません。