You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Werner Punz <we...@gmail.com> on 2010/06/24 11:33:07 UTC

Error handling in case of PPR was Re: Ajax Error Handler problem

Ah ok, sorry it was a tad late...

I personally agree, such a parameter would make sense,
it definitely would be nice to route the errors thrown into an error tag
in case of ajax instead of just pushing it up the server,

you might drop a note in the devs list for that or even provide a patch 
in the issue tracker.

I am not even sure if we need such a parameter it might be even better 
just to default it to <changes><error> in the case of being in a ppr 
request, I am going to forward this to the devs list.


Werner



Am 24.06.10 07:42, schrieb Mark Li:
> Hi werner, i know the<error>  protocol, but i mean i want to handle the error in the server side, Like converter the specific exception to a certain message or convert to other exception. Then the message will be  transferred via<error>  to client side.
>
> this is a littler difference with the other topic about "How can I notice if there are facesmessages via ajax".
>
>
> On Jun 24, 2010, at 5:10 AM, Werner Punz wrote:
>
>> Hia mark since you are directly on the response writer anyway, look at the ajax protocol it has an<error>  part where you can drag in errors which are pushed into the ajax error listener queue automatically:
>>
>> <partial-response>
>> <error>
>> <error-name>...</error-name>
>> <error-message>...</error-message>
>> </error>
>> </partial-response>
>>
>> thats how it looks the error then is issued and an error listener is triggered.
>> The partialResponseWriter should have a startError element afair.
>>
>>
>> Werner
>>
>>
>>
>> Am 23.06.10 18:56, schrieb Mark Li:
>>> Hi everyone,
>>>
>>> There is any solution for Ajax Error Handler? the "org.apache.myfaces.ERROR_HANDLER" seems dont work.
>>>
>>>
>>> The following is my temp solution:
>>>
>>> I hack the code about ajax exception handler. because I try the error handler extension, it doesnot work for ajax. and I cant find out any extension point either.
>>>
>>> there is my code:
>>> org.apache.myfaces.renderkit.ErrorPageWriter
>>> {
>>> .....
>>> public static void handleThrowable(FacesContext facesContext, Throwable ex) throws FacesException
>>> {
>>> ...
>>>
>>> if(!ajaxErrorHandlerInited){
>>>    	try {
>>>       		String ajaxErrorHandlerString = facesContext.getExternalContext().getInitParameter("org.apache.myfaces.AJAX_ERROR_HANDLER");
>>> 		if(ajaxErrorHandlerString != null){
>>> 			Class<?>   handler = ErrorPageWriter.class.getClassLoader().loadClass(ajaxErrorHandlerString);
>>> 			ajaxErrorHandler = handler.newInstance();
>>> 			ajaxErrorHandlerMethod = ajaxErrorHandler.getClass().getMethod("handleException", FacesContext.class, 	
>>> 		}
>>> 	} catch (Throwable e) {
>>> 		e.printStackTrace();
>>> 	} finally{
>>> 		ajaxErrorHandlerInited = true;
>>> 	}
>>> }
>>>
>>> if(ajaxErrorHandler != null){
>>> 	try {
>>> 		String message = (String) ajaxErrorHandlerMethod.invoke(ajaxErrorHandler, facesContext, ex);
>>> 		partialWriter.write(message);
>>> 	} catch (Throwable e) {
>>> 		e.printStackTrace();
>>> 		if(ex.getCause() == null)
>>> 			partialWriter.write(ex.getCause().toString());
>>> 		else
>>> 			partialWriter.write(ex.getMessage());
>>> 	}	
>>> }else{
>>> 	if (ex.getCause() != null)
>>> 	{
>>> 		partialWriter.write(ex.getCause().toString());
>>> 	}
>>> 	else
>>> 	{
>>> 		partialWriter.write(ex.getMessage());
>>> 	}
>>> }
>>>
>>> ...
>>> }
>>> .....
>>>
>>> }
>>>
>>> you can see I define a new "org.apache.myfaces.AJAX_ERROR_HANDLER" parameter for myfaces. myfaces or specification should have this feature.
>>>
>>> Best Regard
>>>
>>> Mark
>>>
>>>
>>
>>
>
>