You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Brian Maddy <bm...@kampersoftware.com> on 2006/03/30 00:29:42 UTC

Re: binding framework and multivaluefields

Sweet, thanks Simone and Bruno!  That fixed it.

I'm sending this to the development list too in hopes that someone there 
will know how to update the 'API notes' section of the following page:
http://cocoon.apache.org/2.1/userdocs/widgets/widget_multivaluefield.html

Here's the line that ended up working for me:
var values = 
java.lang.reflect.Array.newInstance(java.lang.Class.forName('java.lang.Long'), 
3);

Thanks again!
Brian


Bruno Dumon wrote:

>In addition to this, since your multivaluefield uses "long" as datatype,
>you should use java.lang.Long, not java.lang.Integer.
>
>On Tue, 2006-03-28 at 22:18 +0200, Simone Gianni wrote:
>  
>
>>Hi Brian,
>>i think java.lang.reflect.Array.newInstance(java.lang.Integer.TYPE, 0); 
>>generates an array of int ( 
>>http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html#TYPE ), 
>>while the multivalued field probably needs an array of Integer, since 
>>internally it gets converted to an Object[] array. Maybe with java 1.5 
>>this would be managed by automatic boxing, but i would recommend to use 
>>an array of Integer.
>>
>>This means writing something like var values = 
>>java.lang.reflect.Array.newInstance(java.lang.Integer.class, 0); (not 
>>sure this works perfectly in javascript, otherwise use 
>>Class.forName('java.lang.Integer') instead of java.lang.Integer.class).
>>
>>Hope this helps,
>>Simone
>>
>>Brian Maddy wrote:
>>
>>    
>>
>>>Does anyone know how to use the binding framework to set a 
>>>multivaluefield?  My XML file has a string that is comma separated 
>>>values that I need to load in, but I can't even get a simple array to 
>>>work.  Here's what I have so far:
>>>
>>>Form Definition:
>>>       <fd:multivaluefield id="unit_type">
>>>           <fd:datatype base="long">
>>>           </fd:datatype>
>>>           <fd:label>Unit Type(s):</fd:label>
>>>           <fd:selection-list>
>>>               <fd:item value="1">
>>>                   <fd:label>value 1</fd:label>
>>>               </fd:item>
>>>               <fd:item value="2">
>>>                   <fd:label>value 2</fd:label>
>>>               </fd:item>
>>>               <fd:item value="3">
>>>                   <fd:label>value 3</fd:label>
>>>               </fd:item>
>>>           </fd:selection-list>
>>>       </fd:multivaluefield>
>>>
>>>Form Binding:
>>>   <fb:javascript id="unit_type" path="dev:bldg_amenities" 
>>>direction="load">
>>>       <fb:load-form>
>>>var values = 
>>>java.lang.reflect.Array.newInstance(java.lang.Integer.TYPE, 0);
>>>//values[0] = 1;
>>>//values[1] = 2;
>>>//values[2] = 3;
>>>widget.setValue(values);
>>>       </fb:load-form>
>>>   </fb:javascript>
>>>
>>>If I set the values variable to null, the form displays correctly, so 
>>>everything else seems to be working.
>>>
>>>Anyone know how to do this?
>>>
>>>Thanks!
>>>Brian
>>>      
>>>
>
>  
>