cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robby Pelssers <robby.pelss...@the-future-group.com>
Subject RE: how to obtain selected values in a multi-value dropdown
Date Tue, 15 Oct 2013 07:25:43 GMT
Hi Joseph,

good that you solved the issue.  I still think however that when using a valuechanged event
it's better not to ask the source for it's value but just call the getNewValue() on the event
itself.

What you are running into is probably the issue of converting a Java object to a javascript
object.

You could write some utility functions in a common JS file and include them in your page.
That will
(a) keep you from writing the same nasty code multiple times
(b) remove the need to escape e.g. < into &lt;

******************************
formhelper.js
*******************************
function arrayToList(array) = {
   var list = new java.util.ArrayList();
   for(var i=0; <array.length; i++) {
        list.add(value[i]);
   }
}

******************************
formdefinition.xml
*******************************

<fd:on-value-changed>
           <javascript>
               var values= arrayToList(event.getNewValue())
         </javascript>
  </fd:on-value-changed>

Didn't test this but it should work in my opinion.

Cheers,
Robby

R?ntgenlaan 27 | 2719 DX Zoetermeer
www.the-future-group.com
+31 (0)79 - 363 2905
http://twitter.com/futuregroup

06 15879926
robby.pelssers@the-future-group.com

________________________________________
Van: Paul G. Joseph [pjoseph@gmail.com]
Verzonden: maandag 14 oktober 2013 15:45
To: users@cocoon.apache.org
Onderwerp: Re: how to obtain selected values in a multi-value dropdown

Hi Robby,

Thanks for your email.  I wasn't able to get this to work...but was able
to work around this problem as shown below.

       <fd:on-value-changed>
           <javascript>
               var value = event.source.getValue();
               var collection = new java.util.ArrayList();
                  for(var i=0; i&lt;value.length; i++) {
                    collection.add(value[i]);
                  }
         </javascript>
       </fd:on-value-changed>

Thanks again for your help.
Paul

On 10/14/2013 3:53 AM, Robby Pelssers wrote:
> >From the looks of it a org.apache.cocoon.forms.event.ValueChangedEvent has this interface
>
>
> Method Summary
>   Object getNewValue()
>
>   Object getOldValue()
>
>
> why don't you just try
>
> var newvalues = event.getNewValue();
>
> I'm assuming now that this is an array in the multiselect case.
>
> If that doesn't work... let me know.
>
> Robby
> Schrijf je nu alvast in voor het TFG Innovation Event 2013 op 30 oktober
>
> R?ntgenlaan 27 | 2719 DX Zoetermeer
> www.the-future-group.com
> +31 (0)79 - 363 2905
> http://twitter.com/futuregroup
>
> 06 15879926
> robby.pelssers@the-future-group.com
>
> ________________________________________
> Van: Paul G. Joseph [pjoseph@gmail.com]
> Verzonden: woensdag 9 oktober 2013 22:24
> To: users@cocoon.apache.org
> Onderwerp: how to obtain selected values in a multi-value dropdown
>
> Hi there,
>
> I am using Cocoon 2.1.11 and CForms/Javascript/Java in Tomcat.
>
> In a form (say myform.xml) I have two fields--both dropdowns.  One is
> multi-select, the other not.
>
> The multiselect field is as below:
>
> <fd:multivaluefield id="MULTI" required="false">
> <fd:datatype base="string"/>
> <fd:selection-list>
> <fd:item value="Cat"/>
> <fd:item value="Dog"/>
> <fd:item value="Mouse"/>
> </fd:selection-list>
>         <fd:on-value-changed>
>             <javascript>
>             debug("Came here 1");
>                 var value = event.source.value;
>             debug("value is: " + value);
>             </javascript>
>         </fd:on-value-changed>
> </fd:field>
>
> The other (no multi-select) is as follows:
>
> <fd:field id="SINGLE" required="false">
> <fd:datatype base="string"/>
> <fd:selection-list>
> <fd:item value="Lion"/>
> <fd:item value="Tiger"/>
> <fd:item value="Bear"/>
> </fd:selection-list>
>         <fd:on-value-changed>
>             <javascript>
>             debug("Came here 2");
>                 var value = event.source.value;
>             debug("value is: " + value);
>             </javascript>
>         </fd:on-value-changed>
> </fd:field>
>
> Then in my log, when I select multiple values (say Cat and Mouse) in the
> first and a single value (say Tiger) in the second I get:
> 10/09/2013 16:16:00 PM: DEBUG: Came here 1
> 10/09/2013 16:16:00 PM: DEBUG: value is: [Ljava.lang.Object;@8c3fe4
> 10/09/2013 16:16:00 PM: DEBUG: Came here 2
> 10/09/2013 16:16:00 PM: DEBUG: value is: Tiger
>
> Question: how do I get the actual values that the user chose (say Cat
> and Mouse) in the multi-value field?  Should I use a different method
> than the one I used for the single select field and which seems to work?
>
> Paul
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message