2008-10-08 6 views
1

나는 몇 주 동안 Seam (2.0.2.SP1)을 가지고 놀았으며, 대부분의 기본 사항이 내려지지 만 괜찮 았던 점이 없다. 다음에 대한 해결책.Seam/JSF의 유효성 검사 실패에 대한 내비게이션

에 양식이 있고 /foo.seam?id=<fooId>과 같은 URL이 /foo/<fooId>으로 변환되는 다시 쓰기 규칙이 있다고 가정합니다. 양식에 의 commandButton이 있습니다. 또한 성공적인 POST 후 다시 좋은, 북마크 친화적 인 GET에 리디렉션 /foo.page.xml의 탐색 규칙이 :

<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에 대한 POST 대신 /foo/<fooId>에 대한 GET 요청이 끝납니다.

fooHome에 내 자신의 유효성 검사 방법을 적용하여 "실패한"결과를 반환했지만 유효하지 않은 데이터가 유효성 검사 단계를 지나서 현재 대화에 들어가기를 원하지 않습니다.

답변

1

일반적으로 리디렉션이 아닌 유효성 검사 실패시 동일한보기가 다시 표시됩니다. 다시 쓰기 규칙에 대해 UrlRewrite를 사용한다고 가정하면 발신 규칙을 사용하여 /foo/{fooId} URL이 계속 표시됩니다.

+0

실제로 UrlRewrite를 사용하고 있지만 아웃 바운드 규칙을 구성 할 수 없습니다. 은 다시 작성된 URL (/ foo/)이 아닌 현재보기 (/ foo)를 작업으로 사용합니다. 내가 완전히 무언가를 놓치지 않는 한, 을 아웃 바운드 규칙에 넣는 방법이 보이지 않습니다. –

+0

결국, 나는 검증을 실패했을 때와 동일한 관점을 유지하기 위해 양식을 수정했습니다. 원래 내가 원했던 것을 할 수있는 방법이 있다면 여전히 궁금하지만, 지금은 효과가있을 것입니다. –

관련 문제