Done. Patch provided, not fully tested.
https://issues.apache.org/jira/browse/OFBIZ-4342

<https://issues.apache.org/jira/browse/OFBIZ-4342>Regards,


On Sun, Jul 17, 2011 at 1:34 PM, Scott Gray <[email protected]>wrote:

> Yeah, checking for the _ERROR_MESSAGE* keys is the right way to go, would
> be great if you could create a jira issue so this doesn't get lost.
>
> Regards
> Scott
>
> HotWax Media
> http://www.hotwaxmedia.com
>
> On 17/07/2011, at 7:56 AM, Jonatan Soto wrote:
>
> > Well, I did a little read on the jquery ajax documentation (
> > http://api.jquery.com/jQuery.ajax/)  and some of my assertions were
> wrong.
> > It is definitively not related to
> > the CommonEvents#jsonResponseFromRequestAttributes. I felt stupid when I
> > realized that the result the controller returns has nothing to do with
> the
> > ajax callbacks :)
> >
> > According to this doc the error callback is:
> > "A function to be called if the request fails...."
> >
> > In the case I'm exposing, obviously the request is not failing so the
> error
> > I'm getting should be handled in the success callback. Please, tell me if
> > there is another way to do it.
> > I found a js function in the CheckoutProcess.js called
> getServerError(...)
> > which is never invoked. I think it should be included in the success
> > callback like the following code:
> >
> > (chekoutProcess.js)
> >
> > // Check server side error
> > function getServerError(data) {
> >    var serverErrorHash = [];
> >    var serverError = "";
> >    if (data._ERROR_MESSAGE_LIST_ != undefined) {
> >        serverErrorHash = data._ERROR_MESSAGE_LIST_;
> >        jQuery.each(serverErrorHash, function(i, error) {
> >            serverError += error.message + '<br/>';
> >        });
> >    }
> >    if (data._ERROR_MESSAGE_ != undefined) {
> >        serverError = data._ERROR_MESSAGE_;
> >    }
> >    return serverError;
> > }
> >
> > function createUpdateCustomerAndShippingAddress() {
> >    var result = false;
> >    jQuery.ajax({
> >        url: 'createUpdateShippingAddress',
> >        type: 'POST',
> >        dataType: 'json',
> >        async: false,
> >        data: jQuery('#shippingForm').serialize(),
> >        success: function(json) {
> >     var serverError = getServerError(json);
> >     if (!serverError) {
> >            jQuery('#shippingFormServerError').fadeOut('fast');
> >            // Process Shipping data response.
> >            jQuery('#shipToPartyId').val(json.partyId);
> >            jQuery('#billToPartyId').val(json.partyId);
> >            jQuery('#shipToContactMechId').val(json.contactMechId);
> >
> > jQuery('#shipToPhoneContactMechId').val(json.phoneContactMechId);
> >            jQuery('#emailContactMechId').val(json.emailContactMechId);
> >
> > //jQuery('#completedShippingMethod').html(json.shippingDescription);
> >            updateShippingSummary();
> >            getShipOptions();
> >            result = true;
> >     } else {
> >                jQuery('#shippingFormServerError').html(serverError);
> >                jQuery('#shippingFormServerError').css("display","block");
> >                result = false;
> >     }
> >        },
> >        error: function(error) {
> >            if (error != "") {
> >                jQuery('#shippingFormServerError').html(error);
> >            }
> >            result = false;
> >        }
> >    });
> >    return result;
> > }
> >
> > Now with this modifications I am showing the server side error messages
> > correctly.
> >
> >
> > HTH
> >
> >
> > On Sat, Jul 16, 2011 at 8:28 PM, Jonatan Soto <[email protected]
> >wrote:
> >
> >> Hi BJ,
> >>
> >> The setAnonuserLogin is an ECA triggered before. The problem is after it
> if
> >> I'm not wrong.
> >>
> >> Look at:
> >> 2011-07-16 19:44:35,399 (http-0.0.0.0-8443-2) [
> >> ServiceDispatcher.java:599:INFO ] Sync service
> >> [traditional#JF/createUpdateCustomerAndShippingAddress] finished in
> [112]
> >> milliseconds with response [{errorMessageList={Area code is missing,
> Falta
> >> Teléfono de Contacto}, responseMessage=error}]
> >> ...
> >> 2011-07-16 19:44:35,504 (http-0.0.0.0-8443-2) [
> >> RequestHandler.java:639:INFO ] Ran Event
> >> [java:org.ofbiz.common.CommonEvents#jsonResponseFromRequestAttributes]
> from
> >> [request], result is [success]
> >>
> >> The service that is called from ajax is returning 'error' but the
> chained
> >> json request is returning 'success'. I guess this is the problem.
> >>
> >> Thanks anyway!
> >>
> >>
> >> On Sat, Jul 16, 2011 at 8:18 PM, BJ Freeman <[email protected]>
> wrote:
> >>
> >>> [traditional#JF/setAnonUserLogin] finished in [105] milliseconds with
> >>> response [{responseMessage=success}]
> >>>
> >>> it is evaluating a good lognin. this is where to debug.
> >>>
> >>> Jonatan Soto sent the following on 7/16/2011 10:59 AM:
> >>>> Hi all,
> >>>>
> >>>> I am customizing the onePageCheckout (the anonymous part) and I found
> >>>> something strange. I've changed the client-side validation in order to
> >>> allow
> >>>> the customer to only introduce the phone, cell phone or both. But on
> >>>> server-side I didn't change anything in the
> PartyContactMechMapProcs.xml
> >>>> yet. So, it is throwing an error of course, but the ajax handler does
> >>> not
> >>>> consider it as an error. It always executes the success ajax handler!
> >>>>
> >>>> This is the stack trace:
> >>>>
> >>>> 2011-07-16 19:44:35,266 (http-0.0.0.0-8443-2) [
> >>>> ControlServlet.java:141:INFO ] [[[createUpdateShippingAddress] Request
> >>>> Begun, encoding=[UTF-8]- total:0.0,since last(Begin):0.0]]
> >>>> 2011-07-16 19:44:35,283 (http-0.0.0.0-8443-2) [
> >>>> ConfigXMLReader.java:120:INFO ] controller loaded: 0.0030s, 281
> >>> requests,
> >>>> 96 views in jndi:/0.0.0.0/ecomm/traditional/WEB-INF/controller.xml
> >>>> 2011-07-16 19:44:35,286 (http-0.0.0.0-8443-2) [
> >>>> ServiceEcaRule.java:150:INFO ] Running Service ECA Service:
> >>>> setAnonUserLogin, triggered by rule on Service:
> >>>> createUpdateCustomerAndShippingAddress
> >>>> 2011-07-16 19:44:35,392 (http-0.0.0.0-8443-2) [
> >>>> ServiceDispatcher.java:599:INFO ] Sync service
> >>>> [traditional#JF/setAnonUserLogin] finished in [105] milliseconds with
> >>>> response [{responseMessage=success}]
> >>>> 2011-07-16 19:44:35,396 (http-0.0.0.0-8443-2) [
> >>>> TransactionUtil.java:374:WARN ]
> >>>> ---- exception report
> >>>> ----------------------------------------------------------
> >>>> [TransactionUtil.setRollbackOnly] Calling transaction setRollbackOnly;
> >>> this
> >>>> stack trace shows where this is happening:
> >>>> Exception: java.lang.Exception
> >>>> Message: Error in simple-method [Create/Update Customer, Shipping
> >>> Address
> >>>> and other contact details.
> >>>>
> >>>
> [file:/home/jsoto/workspace/ofbizcustom/applications/order/script/org/ofbiz/order/order/CheckoutServices.xml#createUpdateCustomerAndShippingAddress]]:
> >>>> ; {Area code is missing, Falta Teléfono de Contacto}
> >>>> ---- stack trace
> >>>> ---------------------------------------------------------------
> >>>> java.lang.Exception: Error in simple-method [Create/Update Customer,
> >>>> Shipping Address and other contact details.
> >>>>
> >>>
> [file:/home/jsoto/workspace/ofbizcustom/applications/order/script/org/ofbiz/order/order/CheckoutServices.xml#createUpdateCustomerAndShippingAddress]]:
> >>>> ; {Area code is missing, Falta Teléfono de Contacto}
> >>>>
> >>>
> org.ofbiz.entity.transaction.TransactionUtil.setRollbackOnly(TransactionUtil.java:374)
> >>>>
> >>>
> org.ofbiz.entity.transaction.TransactionUtil.rollback(TransactionUtil.java:316)
> >>>> org.ofbiz.minilang.SimpleMethod.exec(SimpleMethod.java:870)
> >>>> org.ofbiz.minilang.SimpleMethod.runSimpleMethod(SimpleMethod.java:160)
> >>>>
> org.ofbiz.minilang.SimpleMethod.runSimpleService(SimpleMethod.java:142)
> >>>>
> >>>
> org.ofbiz.minilang.SimpleServiceEngine.serviceInvoker(SimpleServiceEngine.java:78)
> >>>>
> >>>
> org.ofbiz.minilang.SimpleServiceEngine.runSync(SimpleServiceEngine.java:53)
> >>>>
> >>>
> org.ofbiz.service.ModelServiceReader$GenericInvokerImpl.runSync(ModelServiceReader.java:761)
> >>>>
> >>>
> _$gen.file_58$.home.jsoto.workspace.ofbizcustom.applications.order.servicedef.services_95$checkout_46$xml_35$createUpdateCustomerAndShippingAddress.runSync(file:/home/jsoto/workspace/ofbizcustom/applications/order/servicedef/services_checkout.xml#createUpdateCustomerAndShippingAddress:24)
> >>>>
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:399)
> >>>>
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:226)
> >>>>
> org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:165)
> >>>>
> >>>
> org.ofbiz.webapp.event.ServiceEventHandler.invoke(ServiceEventHandler.java:336)
> >>>>
> >>>
> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:638)
> >>>>
> >>>
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:384)
> >>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224)
> >>>> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:87)
> >>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> >>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >>>>
> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:338)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >>>>
> >>>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> >>>>
> >>>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> >>>>
> >>>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> >>>>
> >>>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> >>>>
> >>>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> >>>>
> >>>
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554)
> >>>>
> >>>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> >>>>
> >>>
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
> >>>>
> >>>
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> >>>>
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> >>>> java.lang.Thread.run(Thread.java:619)
> >>>>
> >>>
> --------------------------------------------------------------------------------
> >>>>
> >>>> 2011-07-16 19:44:35,397 (http-0.0.0.0-8443-2) [
> >>>> ServiceDispatcher.java:543:ERROR] Error in Service
> >>>> [createUpdateCustomerAndShippingAddress]: Area code is missing, Falta
> >>>> Teléfono de Contacto
> >>>> 2011-07-16 19:44:35,397 (http-0.0.0.0-8443-2) [
> >>>> TransactionUtil.java:338:ERROR]
> >>>> ---- exception report
> >>>> ----------------------------------------------------------
> >>>> [TransactionUtil.rollback]
> >>>> Exception: java.lang.Exception
> >>>> Message: Stack Trace
> >>>> ---- stack trace
> >>>> ---------------------------------------------------------------
> >>>> java.lang.Exception: Stack Trace
> >>>>
> >>>
> org.ofbiz.entity.transaction.TransactionUtil.rollback(TransactionUtil.java:337)
> >>>>
> >>>
> org.ofbiz.entity.transaction.TransactionUtil.rollback(TransactionUtil.java:314)
> >>>>
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:547)
> >>>>
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:226)
> >>>>
> org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:165)
> >>>>
> >>>
> org.ofbiz.webapp.event.ServiceEventHandler.invoke(ServiceEventHandler.java:336)
> >>>>
> >>>
> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:638)
> >>>>
> >>>
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:384)
> >>>> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224)
> >>>> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:87)
> >>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> >>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >>>>
> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:338)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> >>>>
> >>>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >>>>
> >>>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> >>>>
> >>>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> >>>>
> >>>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> >>>>
> >>>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> >>>>
> >>>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> >>>>
> >>>
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:554)
> >>>>
> >>>
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
> >>>>
> >>>
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
> >>>>
> >>>
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
> >>>>
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> >>>> java.lang.Thread.run(Thread.java:619)
> >>>>
> >>>
> --------------------------------------------------------------------------------
> >>>>
> >>>> 2011-07-16 19:44:35,398 (http-0.0.0.0-8443-2) [
> >>>> TransactionUtil.java:348:INFO ] [TransactionUtil.rollback] transaction
> >>>> rolled back
> >>>> 2011-07-16 19:44:35,399 (http-0.0.0.0-8443-2) [
> >>>> ServiceDispatcher.java:599:INFO ] Sync service
> >>>> [traditional#JF/createUpdateCustomerAndShippingAddress] finished in
> >>> [112]
> >>>> milliseconds with response [{errorMessageList={Area code is missing,
> >>> Falta
> >>>> Teléfono de Contacto}, responseMessage=error}]
> >>>> 2011-07-16 19:44:35,399 (http-0.0.0.0-8443-2) [
> >>>> RequestHandler.java:639:INFO ] Ran Event
> >>>> [service:#createUpdateCustomerAndShippingAddress] from [request],
> result
> >>> is
> >>>> [error]
> >>>> 2011-07-16 19:44:35,495 (http-0.0.0.0-8443-2) [
> >>>> RequestHandler.java:425:ERROR] Request createUpdateShippingAddress
> >>> caused an
> >>>> error with the following message: {Area code is missing, Falta
> Teléfono
> >>> de
> >>>> Contacto}
> >>>> 2011-07-16 19:44:35,496 (http-0.0.0.0-8443-2) [
> >>>> RequestHandler.java:524:INFO ] [RequestHandler.doRequest]: Response is
> a
> >>>> chained request. sessionId=4D2FA44B2DA6BCB7E2D9BE245F808E22.jvm1
> >>>> 2011-07-16 19:44:35,496 (http-0.0.0.0-8443-2) [
> >>>> RequestHandler.java:167:INFO ] [RequestHandler]: Chain in place:
> >>>> requestUri=json overrideViewUri=null
> >>>> sessionId=4D2FA44B2DA6BCB7E2D9BE245F808E22.jvm1
> >>>> 2011-07-16 19:44:35,504 (http-0.0.0.0-8443-2) [
> >>>> RequestHandler.java:639:INFO ] Ran Event
> >>>> [java:org.ofbiz.common.CommonEvents#jsonResponseFromRequestAttributes]
> >>> from
> >>>> [request], result is [success]
> >>>> 2011-07-16 19:44:35,556 (http-0.0.0.0-8443-2) [
> >>>> ServerHitBin.java:627:INFO ] Visit delegatorName=default#JF,
> >>> ServerHitBin
> >>>> delegatorName=default#JF
> >>>> 2011-07-16 19:44:35,604 (http-0.0.0.0-8443-2) [
> >>>> SequenceUtil.java:337:INFO ] Got bank of sequenced IDs for
> >>> [ServerHitBin];
> >>>> curSeqId=53390, maxSeqId=53400, bankSize=10
> >>>> 2011-07-16 19:44:35,653 (http-0.0.0.0-8443-2) [
> >>>> ControlServlet.java:324:INFO ] [[[createUpdateShippingAddress] Request
> >>> Done-
> >>>> total:0.386,since last([createUpdateShip...):0.386]]
> >>>>
> >>>>
> >>>>
> >>>
> -----------------------------------------------------------------------------------------------
> >>>>
> >>>> After a bit of investigation I found this:
> >>>>
> >>>> The event 'createUpdateCustomerAndShippingAddress' is returning an
> error
> >>> as
> >>>> a result but since the request is chained (with a json request) the
> >>>> controller takes the response from the event
> >>>> 'java:org.ofbiz.common.CommonEvents#jsonResponseFromRequestAttributes'
> >>> which
> >>>> is always 'success'. So that's why I figure out the ajax error handler
> >>> is
> >>>> never invoked.
> >>>>
> >>>> What do you think?
> >>>>
> >>>> For further details, I am using a 3 months old trunk version with
> MySql.
> >>>> I've checked out the latest version
> >>>> of CommonEvents#jsonResponseFromRequestAttributes in the SVN, still
> the
> >>> same
> >>>> code as I have.
> >>>>
> >>>> Thanks in advance.
> >>>>
> >>>
> >>
> >>
> >>
> >> --
> >> -----
> >>
> >> Jonatan Soto
> >>
> >
> >
> >
> > --
> > -----
> >
> > Jonatan Soto
>
>


-- 
-----

Jonatan Soto

Reply via email to