I think there may be a bug then... When I try to use a String array in my Java class, I get the following error:
Exception trying to set value with xpath validchecks; Cannot modify property: elrsproto.FormBean.validchecks; Cannot convert value of class java.lang.String to type class [Ljava.lang.String;; Cannot convert class java.lang.String to class [Ljava.lang.String; That's why I tried to use just a straight String. And it works, except that it only gets the value of the first check. Whether I use the nodeset or not, I get the same behaviour. I did verify that I don't need to use the nodeset if I specify all of the controls ahead of time in the form definition. Thanks. For now my work-around is to use a javascript array object for the form and then copy it into my Java class. That works. Odd. > -----Original Message----- > From: Giacomo Pati [SMTP:[EMAIL PROTECTED] > Sent: Thursday, August 21, 2003 3:06 AM > To: [EMAIL PROTECTED] > Subject: Re: Checkboxes in JXForms - javascript OK, java NOT > > On Wed, 20 Aug 2003, Chris Clark wrote: > > > Based on the samples, I've been looking at checkboxes in JXForms and have a few > > questions... > > Given the following snippet from an xform definition: > > > > <xf:select ref="validchecks" appearance="full"> > > <xf:label>Check if field is Present & Legible</xf:label> > > <xf:itemset nodeset="fieldset"> > > <xf:label ref="key"/> > > <xf:value ref="value"/> > > </xf:itemset> > > </xf:select> > > > > 1) Do you have to use the nodeset? This is fine if you want multiple > > checks, but if I just want one checkbox? I tried a number of things, > > but none worked. e.g. an xf:input with a hard-coded type="checkbox". > > This displayed okay, but the checked/unchecked state wasn't recorded > > anywhere that I could find. If you don't need the nodeset, is there a > > sample and/or docs? > > IIRC no. See below > > > 2) I got the above to work in javascript with the following structure. > > > > var modelObj= { > > validchecks: [""], > > // define a nodeset (list of all checkboxes in a group) > > fieldset: [{key:"Description", value:"desc"}, // key=what to display, > > value=what to store in var > > {key:"Name", value:"name"}, > > etc... > > }; > > form.setModel(modelObj); > > form.sendView("form/form-submit.xml"); > > You can do: > > <xf:select ref="validchecks" appearance="full"> > <xf:label>Check if field is Present & Legible</xf:label> > <xf:item> > <xf:label>Description</xf:label > <xf:value>desc</xf:value> > </xf:item> > <xf:item> > <xf:label>Name</xf:label > <xf:value>name</xf:value> > </xf:item> > ... > </xf:select> > > > > > > > When I hit submit, the validchecks is filled out with the value of > > anything that was checked. > > > > 3) Instead of using an object defined in javascript, I wanted to use > > my own Java Bean (to facilitate access to the form data after submit). > > The javascript now looks like: > > > > var modelObj = new Packages.elrsproto.FormBean(); > > form.setModel(modelObj); > > form.sendView("form/form-submit.xml"); > > > > The FormBean looks like this: > > > > public class FormBean > > { > > private String validchecks; > > private FieldBean[] fieldset = { > > new FieldBean("Description", "desc"), > > new FieldBean("Name", "name"), > > etc... > > }; > > ... > > > > FieldBean is a helper class that contains two strings named "key" and > > "value". > > > > This displays correctly on screen (i.e. looks the same as the totally > > javascript version). The plain edit controls on the form and their > > String representations in the FormBean (not shown) work fine. > > However, only the value of the first selected checkbox shows up. If I > > check five checkboxes, I only see one value in the "validchecks"> > > variable. When I do this in javascript, I see a comma-delimited list > > with all of the selected values. > > > > Does this fall under the heading of "you aren't supposed to do that, > > so don't"? Is this a bug? Do I just have the syntax wrong? (I tried > > a number of things, like making the validchecks an array, but they all > > threw errors of varying sorts.) > > You have to use a String array for validchecks to get all checked keys. > This is also used for prepareing all checkboxes for display with values > in validchecks switched on (have a look at the hobby part in the jxform > samples). > > -- > Giacomo Pati > Otego AG, Switzerland - http://www.otego.com > Orixo, the XML business alliance - http://www.orixo.com >