ok, problem solved. Although I am still confused about how it works for other
people. Here is what happened.

I tried to get my test page to look as close to
http://example.irian.at/example-sandbox-20080129/inputSuggestAjax.jsf as
possible, and it still didn't work even though the generated javascript code
was practically identical. After reading dojo.js for a few hours I found
that the responses are handled in the doLoad(e) function, where I placed a
breakpoint. 

This breakpoint finally showed me what the difference between the example
and my page was: my response was returned as two concatenated lists of
strings, rather than a list of strings! This caused
dj_eval("("+http.responseText+")") call in dojo.js to fail.

Why was I getting two identical lists from the component instead of one?
Well, turns out that AjaxDecodePhaseListener.beforePhase() was executed
twice in the APPLY_REQUEST_VALUES phase. For that matter all of my phase
listeners executed twice...

This brings me to my current question - why would this component work for
anyone else? The problem seems to lie in a JSF bug, so everyone should be
effected. Here is why:

The fault (in my opinion) lies in method feedClassloaderConfigurations() in
org.apache.myfaces.config.FacesConfigurator. This method is supposed to look
for "META-INF/faces-config.xml" resource in all classloaders and then parse
the found files. Now, if we have some jars, like let's say
tomahawk-sandbox.jar in WEB-INF/lib, this jar will be visible to the
WebAppClassloader AS WELL AS AppClassLoader. i.e. tomahawk-sandbox.jar will
appear twice in the list of found resources, b/c it is visible to both
classloaders. Since feedClassloaderConfigurations() does not check for
duplicates, we end up with all configuration in "META-INF/faces-config.xml"
resources applied twice.

I solved this problem by overriding the StartupServletContextListener and
removing the duplicate phase listeners from the lifecycle.
<s:inputSuggestAjax> works fine now.

Does this make sense or am I missing something?


Val
-- 
View this message in context: 
http://www.nabble.com/s%3AinputSuggestAjax-dojo-controls-not-working-tp15150699p15168506.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.

Reply via email to