[ 
https://issues.apache.org/struts/browse/WW-1972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44893#action_44893
 ] 

Mario Matias Urbieta commented on WW-1972:
------------------------------------------

This is the second work arround that i had to do today. I'll never use this 
framework again.
The main problem is that dojo plugin uses dojo to send the form in a ajax way 
and many struts2 components spect a
dom submit event- such as optiontransferselect-  that allows listeners to 
select the comprised items.
So i emulated the traditional form submition by the following steps avoiding 
refactoring the xhtml tags:

* Add a listener to the form for stopping the dom submit event bubble. This is 
the key, i supposed that this listener will be the last executed ( it worked on 
FF3 and  IE7).
* Fire on submit event. this will excercise the listeners but will be stoped by 
our listener.

This JS goes at the ajax form

dojo.event.topic.subscribe("/selectAll",
                function(widget, event) {
                        
StrutsUtils.addEventListener(document.getElementById('${parameters.id}'), 
"submit", 
                function(evt) {
        dojo.event.browser.stopEvent(evt);
                }, true);
                                
                        
fire('submit',document.getElementById('${parameters.id}'));     
                                

                });



function fire(evttype,el) {
    if (document.createEvent) {
      var evt = document.createEvent('HTMLEvents');
      evt.initEvent( evttype, true, true);
      el.dispatchEvent(evt);
    } else if (document.createEventObject) {
      el.fireEvent('on' + evttype);
    }
}



and finally i had to add the following attribute to the ajax submit tag wich 
triggers the emulation behavior.

beforeNotifyTopics="/selectAll"

this work arround is oblivious and seamless.


> <s:optiontransferselect ... items not autoselected on submit.
> -------------------------------------------------------------
>
>                 Key: WW-1972
>                 URL: https://issues.apache.org/struts/browse/WW-1972
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - Dojo Tags
>         Environment: WindowsXP, Java 1.6, Tomcat v5.5
>            Reporter: Jan Hornbøll Hansen
>            Assignee: Jan Hornbøll Hansen
>             Fix For: Future
>
>
> Have form like:
> <s:form action="addUser" method="get">
>       <s:textfield name="user.username"><s:param name="label"><fmt:message 
> key="user.label.username"/></s:param></s:textfield>
>       <s:password name="user.password"><s:param name="label"><fmt:message 
> key="user.label.password"/></s:param></s:password>
>       <s:optiontransferselect name="user.roles" list="user.roles" 
> listKey="id" listValue="name" doubleName="roleList" doubleList="roleList" 
> doubleListKey="id" doubleListValue="name">
>       </s:optiontransferselect>
>       <s:submit type="button" value="%{'add'}">
>               <s:param name="label"><fmt:message 
> key="global.label.add"/></s:param>
>       </s:submit>
> </s:form>
> AddUserAction implements ParameterAware. When form submitted only parameters 
> received are user.username & user.password. Tag reference for 
> <s:optiontransferselect> states that all values in both lists are supposed to 
> be selected before submit (so they'd also be added as parameters).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to