[
https://issues.jboss.org/browse/RF-12571?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brian Leathem resolved RF-12571.
--------------------------------
Resolution: Rejected
JSF Error handling should be implemented on the server side. The {f/a4j}:ajax
_onerror_ attribute is meant to handle errors with the http communication, not
JSF errors.
> aj4:status - onerror - more documentation - more attributes ?
> -------------------------------------------------------------
>
> Key: RF-12571
> URL: https://issues.jboss.org/browse/RF-12571
> Project: RichFaces
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Reporter: Jean ANDRE
>
> The documentation on aj4:status does not explain very well what we should
> expected as data to be passed or retrieved when error occurred. Could you
> please, post here and also at the documentation, some clues, details,
> information, valuable examples, live demos... to help us managing error on
> ajax request. Thank you very much.
> {code}
> <a4j:status id="ajax-status"
> name="ajaxStatus"
> onstart="#{rich:component('messageWaiter')}.show()"
> onstop="#{rich:component('messageWaiter')}.hide()"
> onerror="alert(event.type);alert(status);" />
> {code}
> Based on above code, it seems we can catch at least one object - the event
> but the event does not seem to have any valuable information.
> It is possible to sent us some valuable information when we received the
> onerror event from ajax call and tell us what we can use as information to be
> displayed to user.
> Some old versions?, seems to have 3 attributes like req, status, message on
> event error but with RichFaces 4.2.3 final, what we can have, have as
> alternative or do ?
> from https://community.jboss.org/message/54813
> {code}
> A4J.AJAX.onError = function(req, status, message){
> if(status == 505 || status == 500 || status == 400){
> window.alert("Error: "+message + "\n Please contact administrator" );
> }
> }
> {code}
> For example, in this situation, I emulated an error into the controller,
> which is a NPE
> {code}
> public String doOpenItem(String tabId, Integer itemId) throws
> InterruptedException {
> Thread.currentThread().join(2000);
> Integer i = null;
> i.doubleValue();
> return "thepage";
> }
> {code}
> The error is trigger from a simple commandLink
> {code}
> <a4j:commandLink id="openCmd"
> action="#{listItemController.doOpenItem(tab.id, item.id)}"
> render="desktopTabs"
> value="#{msg['common.command.open']}"
> status="ajaxStatus" />
> {code}
> {code}
> <!-- -->
> <!-- WAITER MESSAGE -->
> <!-- -->
> <rich:popupPanel id="messageWaiter"
> modal="false"
> style="border:1px solid red;"
> autosized="true"
> resizeable="false"
> shadowDepth="3"
> shadowOpacity="1"
> top="250">
> Please wait...
> </rich:popupPanel>
> {code}
> When we got when the response returns back to the request sent, when the
> error is triggered (from the NPE at the controller side).
> Under firebug:
> {code}
> <?xml version='1.0' encoding='UTF-8'?>
> <partial-response><error><error-name>class
> javax.faces.el.EvaluationException</error-name><error-message><![CDATA[]]></error-message></error></partial-response>
> {code}
> But the log file of the application is more explicit:
> {code}
> java.lang.NullPointerException
> at
> com.nested.web.controller.ListItemController.doOpenItem(ListItemController.java:40)
> at
> com.nested.web.controller.ListItemController$Proxy$_$$_WeldClientProxy.doOpenItem(ListItemController$Proxy$_$$_WeldClientProxy.java)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:779)
> at javax.el.BeanELResolver.invoke(BeanELResolver.java:528)
> at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:257)
> at com.sun.el.parser.AstValue.invoke(AstValue.java:248)
> at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
> at
> org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
> at
> org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
> at
> com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
> at
> javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
> at
> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
> at javax.faces.component.UICommand.broadcast(UICommand.java:315)
> at
> org.richfaces.component.RowKeyContextEventWrapper.broadcast(RowKeyContextEventWrapper.java:104)
> at
> org.richfaces.component.UIDataAdaptor.broadcast(UIDataAdaptor.java:448)
> at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
> at
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
> at
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
> at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
> at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
> at
> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
> at
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
> at
> com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
> at
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
> at
> com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
> at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
> at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
> at
> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
> at
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
> at
> com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
> at
> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
> at
> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
> at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
> at
> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
> at
> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
> at java.lang.Thread.run(Thread.java:662)
> {code}
> Is it possible to retrieve all necessary material to be reported to the user
> or technical team ?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues