Hi Marc ... sorry for the extemely late response.
I am currently doing a Project for a customer with very strict internet access policies, so I wasn't able to read this list.

I think your problems are related to two different main problems.
On the the one hand the (in your scenario #2 direct js ajax request + 1 cform on the page = bug) Cocoon finds out it's an ajax request and since an ajax-anabled form is in the conrinuation, it uses this --> Error in your fourth sample you have two CForms bound to one continuation. Since they are sticked to a default name the first form will overwrite the HashMap entry of the second --> Your first form dies.

I have no really sattisfying suggestion. How about using dojo to pull in the search form after the main page is fiished. By this your CForm in the search div would have it's own continuation and would no longer interfere with the main one. As far as I understand the Submit-Code of cforms this should work, but I haven't tried it.

Regards,
    Chris

Marc Salvetti schrieb:
Hi Cristopher,

thanks for your explanations, i think it's related to the same problem, but i still have no idea on how to solve it.
i will try to give a more detailed explanation of what i'm trying to do :

on one page on my site, i have links that send an ajax request directly, outside of a cform, like this :
function sendReq(strReq) {
    var req = createXHR();
    if (req) {
        req.open("POST", strReq, true); // true = async
        req.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8");
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                handleBrowserUpdate(req);
            }
        }
        req.send("cocoon-ajax=true");
    }
}
this is received by the sitemap as an ajax request, somewhere in the pipe i add some <bu:replace> tags, transform this with the browser-update transformer and send this back to the above js function for browser updating.

On some other pages, i have one cform with ajax turned on.

Everything about this was working fine, until i tried to add a search cform on every page of the website. From what i understood to my problem, every time an ajax request is sent by whatever means (internal cforms or direct js call), to the server, the template generator tries to access the list of updated widgets in the search cform and crash because this list hasn't been initialized (NPE). Apparently, the normal behavior is to initialize it after the form is submited, which (wrongfully) assume that the ajax request was sent by this form and not by some other means (another cform submit or a direct js call)

Or in other words :)

direct js ajax request + no cform on the page = ok
direct js ajax request + 1 cform on the page = bug
cform ajax request + 1 cform on the page = ok
cform ajax request + 2 cform on the page = bug

Marc

2007/5/14, Christofer Dutz <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>:

    Hi Marc,

    do I understand your problem correct, that you have two forms on your
    page? This can be a problem. Since having a deeper cook into
    JavaFlow I
    could see, that the form instance is bound to an AvalonContext with a
    fixed Name. This means, that one FormInstance should overwrite the
    other
    one. I don't exactyl know how this is implemented in FlowScript, but
    since Generators like the SuggestionListGenerator also looks for a
    hard-coded "CocoonFormsInstnce" object, I guess this is generally done
    that way.

    Even if I know this doesn't help you solve the problem ... maybe it
    helps you find it.

    Feel free to contact me. I will do my best to help you if you
    provide a
    little more detailed description of your problem / applicatoin setup /
    intention.

    Chris

    Marc Salvetti schrieb:
    > Hello,
    >
    > i'm running in a tricky problem while trying to add a search
    form to
    > every page of the site.
    > Anytime an ajax request is sent, either by a cform widget on another
    > form, or by a custom js function, i get an error 500 :
    > *Couldn't evaluate expression cformsHelper.pushWidget (id)*
    > resource://org/apache/cocoon/forms/generation/jx-macros.xml -
    45:52   //
    >
    >
    > with a NPE in the pushWidget() method.
    > Caused by: java.lang.NullPointerException
    >       at
    org.apache.cocoon.forms.generation.JXMacrosHelper.pushWidget
    (JXMacrosHelper.java:163)
    >       at
    
org.apache.cocoon.forms.generation.JXMacrosHelper.pushWidget(JXMacrosHelper.java
    > :231)
    >       at sun.reflect.GeneratedMethodAccessor100.invoke(Unknown
    Source)
    >       at
    
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    >       at java.lang.reflect.Method.invoke(Method.java:585)
    >
    >       at
    
org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke
    (UberspectImpl.java:268)
    >       at
    org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:61)
    >       at org.apache.commons.jexl.parser.ASTReference.execute
    > (ASTReference.java:68)
    >       at
    org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:50)
    >       at
    org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:86)
    >       at
    org.apache.cocoon.components.expression.jexl.JexlExpression.evaluate
    > (JexlExpression.java:47)
    >       ... 135 more
    >
    >
    > By looking at the source, it appears that the member updatedWidgets
    > has not been initialized before the call to pushWiget, which
    cause the
    > NPE. Apparently, this is initialized in the call to form.process(),
    > every time the form is submited.
    >
    > But in my case, i don't submit this form, but either another form or
    > no form at all, so i don't really know what i should do to fix this
    > problem.
    >
    > Any help  would be greatly appreciated,
    >
    > Marc



    ---------------------------------------------------------------------
    To unsubscribe, e-mail: [EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>
    For additional commands, e-mail: [EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to