One note about that handy doc page... a little error on it...
Where this is... .... @Component(type = "Autocompleter", id = "projectSelect", bindings = { "model=projectModel", "value=selectedProject", "displayName=message:choose.project", "filterOnChange=true", "validators=validators:required"}) public abstract Autocompleter getProjectSelection(); @EventListener(targets = "projectChoose", events = "selectOption") public void projectSelected() { // do something } .... I think this should be instead... .... @Component(type = "Autocompleter", id = "projectSelect", bindings = { "model=projectModel", "value=selectedProject", "displayName=message:choose.project", "filterOnChange=true", "validators=validators:required"}) public abstract Autocompleter getProjectSelection(); @EventListener(targets = "projectSelect", events = "selectOption") public void projectSelected() { // do something } .... And while I'm here... great job Jesse! This EventListener annotation is just a little life saviour . Regards, On 8/8/06, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:
Yep. No need for all of that complexity with Tapestry. I would reccomend using the EventListener to do this. It should be a fairly simple task to update your second combo box when the first has a value selected in it. http://tapestry.apache.org/tapestry4.1/ajax/EventListener.html On 8/8/06, Jani Lindqvist <[EMAIL PROTECTED]> wrote: > > Hi All, > > I need a combobox that populates based on the selection of other combobox. > It´s pretty simple to do in jsp, but i want to convert it to a tapestry > component that just takes 2 collection as parameters. contents of the > first > combobox and then a map of lists, with the id of the object contained in > the > first combobox as a key. > > I havent used javascript in tapestry, otherwise than call some functions > that are generated using Any component. > > my jsp function generates couple of arrays holding the mappings and values > and when the first combobox is changed the function is called. i think > i´ve > figured out from the documentation how to pass the name of the form and > component to the script so it can read the value that was changed but how > do > i generate the arrays? > > > here is an example of one function generated in the jsp > > function change_combo() > { > var comboone_value = new Array(); > var comboone_title = new Array(); > > > comboone_value[0] = "51"; > > comboone_title[0] = "username1"; > > comboone_value[1] = "37"; > comboone_title[1] = "username2"; > > > var combotwo_title = new Array(); > var combotwo_value = new Array(); > > > combotwo_title[51] = new Array(); > combotwo_value[51] = new Array(); > > > combotwo_value[51][0] = "296"; > combotwo_title[51][0] = "Customer A"; > > combotwo_value[51][1] = "294"; > > combotwo_title[51][1] = "Customer B"; > > combotwo_value[51][2] = "297"; > combotwo_title[51][2] = "Customer C"; > > > > > combotwo_title[37] = new Array(); > combotwo_value[37] = new Array(); > > > > combotwo_value[37][0] = "277"; > combotwo_title[37][0] = "Customer 1"; > > combotwo_value[37][1] = "283"; > combotwo_title[37][1] = "Customer 2"; > > combotwo_value[37][2] = "300"; > > combotwo_title[37][2] = "Customer 3"; > > > > > var combo1_selection; > combo1_selection = document.customerCall.userId[ > document.customerCall.userId.selectedIndex].value; > > > > if (combo1_selection != 0) { > > > var combo2_values = combotwo_value[combo1_selection]; > var combo2_titles = combotwo_title[combo1_selection]; > if(combo2_values == null) > { > > document.customerCall.customerId.options[0].value = "-"; > > document.customerCall.customerId.options[0].text = "-"; > document.customerCall.customerId.length = 1; > } else > { > > > document.customerCall.customerId.length = combo2_values.length; > > > for(i=0;i<combo2_values.length;i++){ > > document.customerCall.customerId.options[i].value= > combo2_values[i]; > document.customerCall.customerId.options > [i].text=combo2_titles[i]; > } > > > } > }else{ > document.customerCall.customerId.options[0].value > = "-"; > document.customerCall.customerId.options[0].text = > "-"; > } > } > > > how do i do for loops in the script? > > we´re thinking of upgrading to 4.1, is there some component that i could > use > to populate the second one with ajax, so i would be spared of this > javascript generation? > > -- Jesse Kuhnert Tacos/Tapestry, team member/developer Open source based consulting work centered around dojo/tapestry/tacos/hivemind.
-- Pedro Viegas