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 |
- Re: binding framework and multivaluefields Bruno Dumon
- Re: binding framework and multivaluefields Brian Maddy