You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Mario Matias Urbieta (JIRA)" <ji...@apache.org> on 2008/10/29 23:49:37 UTC

[jira] Commented: (WW-1972)
    [ 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.