cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Johnston <jjohns...@apache.org>
Subject Re: Question about cocoon vs. IE setting
Date Thu, 24 Apr 2008 00:51:32 GMT
Hi Yiwen, good to talk to you again!

(For future reference, user questions like this are better suited for 
the users@cocoon.apache.org mailing list.)

The bug you're encountering is not a Cocoon-specific issue, but rather a 
problem with how IE handles <button/> elements.  If you have multiple 
buttons on a page, IE will submit the name=value parameters for *all* of 
them, not just the one you clicked.  This is obviously a problem when 
your server-side code expects just name=value pair.

The "safe" solution is, as Jeroen suggested, to use <input 
type="submit"/> instead of <button/>, and that is in fact what is 
created by the default CForms styling XSLT.  However, there are 
advantages to <button/>, namely that it can display complex content as 
its label whereas <input/> can only display a simple text label.

Now, since I happen to have inside knowledge of the project you're 
working on ;-), I do know that displaying complex labels is required, so 
using <input/> isn't really an option.  That's why your product's custom 
CForms styling XSLT overrides the default template to create <button/>s 
instead.  To get around the IE bug, there is a client-side script that 
listens for button clicks, and performs some DOM manipulation to 
obfuscate the names of the non-clicked buttons so that they don't send 
clashing request parameters.  It sounds to me like this client-side 
script has somehow been broken, or is not working properly under a 
specific circumstance.

I hope that helps; if not, feel free to email me directly since there's 
no reason to bug the fine folks on this list with non-Cocoon discussions.

--Jason



Xu, Yiwen wrote:
> We are currently experiencing a problem for button submission for IE 
> browser. We tested it in several IE. it worked successfully in 
> successfully, but some other IE seems unable to get the submitted button 
> id which cause our application failure (see below for more details). All 
> IE we originally tested was version 6. We upgrade those problematic IE 
> to 7 and 8.1, but same problem still occurred. Can anyone tell me what 
> IE configuration or OS configuration might impact this cocoon button 
> submission process?
>  
> Thanks in advance !!!
>  
> ----- Details ----------
> This is the html code which contains the "Summit" button.
> <button title="" value="1" name="msag-query-QueryAction" 
> id="msag-query-QueryAction" type="submit" class="submit">Submit</button>
>  
> This is the debug message in the javascript program which loads and 
> processes the form:
>     cocoon.log.error("submitted button ID : " + form.submitId + "\n 
> submitted widget :" + form.getWidget().getSubmitWidget());
>  
> For those IE which doesn't have problem, the debug result shows:
> 
>     submitted button ID : msag-query-QueryAction  submitted widget 
> :Submit-msag-query-QueryAction
> 
>  
> 
> But for those problematic IE, the debug result is:
> 
>     submitted button ID : undefined 
> 
> submitted widget :Submit-msag-query-QueryAction
> 
> which caused cocoon throws  " java.lang.IllegalStateException: 
> SubmitWidget can only be set once. "
>  


Mime
View raw message