2012-03-20 2 views
0

ajax 호출의 오류 페이지로 리디렉션하기 위해 xhtml 파일에 다음 코드를 작성했습니다. 공통 페이지에서 작성했습니다.JSF 2.0 Ajax 예외 처리

var onError = function onError() { 
window.location = 'http://' + jQuery(location).attr('host')+'/saec/app/error';//saec/app/error };jsf.ajax.addOnError(onError); 

괜찮 았지만 브라우저에서 "Jsf undefined"라는 오류 메시지가 나타납니다.

나는 또한

h:outputScript name="jsf.js" library="javax.faces" target="head" 

을 포함하지만이 같은 오류를 제공함으로써 그것을 시도했다. 나는 "정의되지 않은 JSF"로 오류가 실수

답변

2

하지만 브라우저 오전에했던 곳

어느 한 날을 알려주십시오 수 있습니다.

귀하의 옆에있는 오타가 아닙니까? jsf은 모두 소문자이며 Jsf이 아닙니다.

어쨌든 jsf 개체 을 참조하려고 할 때마다이 오류가 발생합니다.은 JavaScript 컨텍스트에서 선언 된 것입니다. 예를 들어, (당신이 소스보기 웹 브라우저에서로 볼 수) 생성 된 HTML 출력은 다음과 같이 :

<script>jsf.ajax.addOnError(functionName);</script> 
<script src="/contextname/javax.faces.resource/jsf.js.xhtml?ln=javax.faces"></script> 

당신은 당신이 선언되어 후 를 참조하는지 확인해야합니다

<script src="/contextname/javax.faces.resource/jsf.js.xhtml?ln=javax.faces"></script> 
<script>jsf.ajax.addOnError(functionName);</script> 

또한,보기에 다른 곳의 <f:ajax> 태그가있을 때마다 JSF가 자동 포함한다는 사실을 고려해야합니다. 이 경우인지 아닌지 당신은 추가 검사를 추가 할 수 있습니다 : 그렇지 않으면

if (typeof jsf !== 'undefined') { 
    jsf.ajax.addOnError(functionName); 
} 

, 당신은 JSF는 비록 모든 요청에 ​​아약스 스크립트를 자동으로 포함됩니다 절대적으로 확인하기 위해 다음 줄을 추가해야합니다 보기에는 <f:ajax>이 포함되어 있지 않습니다. 당신은뿐만 아니라 아약스 요청에 web.xml에 표준 <error-page> 메커니즘을 사용하려는 경우

<h:outputScript library="javax.faces" name="jsf.js" target="head" /> 
구체적인 문제에

관련없는

은 다음 대신 FullAjaxExceptionHandler을 사용하는 것이 좋습니다.