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]>:

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]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to