2011-04-01 4 views

답변

4

완료되지 않은 이벤트에서 오류를 확인하고 오류가없는 경우 리디렉션 할 수 있습니다. 그것은 단지 facesContext.maximumSeverity을 찾고,이

oncomplete="#{facesContext.maximumSeverity == null ? 'redirectBrowser()' : 'doSomethingElse()'}" 
+0

a4j : commandButton과 탐색에는 문제가 없습니다. 탐색에 사용하도록 설계되지 않았습니다. 하나의 옵션은 내비게이션에 을 사용하는 것입니다. –

2

음과 같이 수행 할 수 있습니다 == 널 (null)도 리디렉션해야 현재 최대 심각도와 같은 경고가있을 수 있습니다 충분하지 않습니다. 대신, 우선 순위 오류의 최대 심각도가있는 경우 보이는 방법 ... 당신은 JSF 2.0 경우

3

, 유효성 검사가 실패했거나하지 않은 경우 확인 FacesContext#isValidationFalied()을 사용할 수 있습니다 쓰기 :

oncomplete="if (#{not facesContext.validationFailed}) redirectBrowser()" 

그러나, 단지 액션 메소드에서 리디렉션을 수행하는 것은 더 깨끗한 :

public String doCalculation() { 
    // ... 

    if (success) { 
     return "nextPage.xhtml?faces-redirect=true"; 
    } else { 
     return null; 
    } 
} 

그러나 더 깨끗한 Validator에 의해 검증을 바로하는 것입니다. 이렇게하면 유효성 검사가 실패했을 때 조치 메소드가 호출되지 않습니다.

+0

답변 해 주셔서 감사합니다! 그것은 매우 도움이되었습니다. 정중하게 한 지점에 동의하지 않으려면 작업 메서드에서 리디렉션을 수행하는 것이 덜 깨끗합니다. 문자열을 반환하여 리디렉션을 허용하는 IMHO는 Faces의 디자인 결함입니다. – wprl

+2

이것은 설계상의 결함이 아닙니다. PRG는 가장 일반적으로 사용되는 웹 디자인 패턴 중 하나입니다. http://en.wikipedia.org/wiki/Post/Redirect/Get 그러나 X 페이지에서 Y 페이지로의 * 일반 바닐라 * 탐색을위한 POST 양식 사용은 절대적으로 디자인 결함 (JSF가 아닌 개발자). http://stackoverflow.com/questions/4317684/when-should-i-use-houtputlink-instead-of-hcommandlink – BalusC

+0

죄송합니다. 게으른 말이 내가 찾고있는 단어가 아닙니다. PRG에 아무런 문제가 없습니다. 그것은 단지 clunky 문법입니다. 일부 리디렉션 메서드를 호출하는 대신 문자열을 반환하는 것이 이상하게 보입니다. – wprl

관련 문제