I'm back on this issue now after having put it on the "back-burner" for a short time...since I couldn't figure it out before. I had posted several messages about this but can't find the original emails to reply to, so I'm sorry to create a new thread out of an old issue!
I *just can't* get this dropdown to choose an item after loading the model and passing it in...I've exhausted all of my own ideas and really need help figuring this out. I'm building a shopping cart and after selecting an item to add to your cart on a products-list page...you see the next page (Cart class). In the previous page I used a Map to store the Configuration item + its quantity selected by the user (Igor, you may remember my many posts on this issue)....I then use the Cart page to load the Map into the page for display. Adding & changing items in my cart revolve around Wicket passing this Map into it. In the Cart page I pre-load a new Map to pass into a ListView and the user can then adjust the quantity of the items chosen and re-submit the changes. Here is the entire class: ************************************************************************************ public class Cart extends WebPage { private Map<Configuration, Integer> selection = new HashMap<Configuration, Integer>(); public Cart() { //get cart from session final ShoppingCart cart = ((UserSession)getSession()).getCart(); //create form Form form = new Form("cartForm"); //add OrderLine items to map for (OrderLine line : cart.getOrderLines()) { selection.put(line.getConfiguration(), line.getQuantity()); } //add list of Configuration objects to form form.add(new ListView("cartView", cart.getOrderLines()) { protected void populateItem(ListItem item) { //get object final OrderLine line = (OrderLine)item.getModelObject(); //pull config from line final Configuration config = line.getConfiguration(); //store Configuration and qty in model IModel selectionModel = new Model() { public void setObject(Component c, Object o) { selection.put(config, Integer.parseInt((String)o)); } public Object getObject(Component c) { return selection.get(this); } }; //qty select values List<String> choices = Arrays.asList( new String[] {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}); //add quantity select list item.add(new DropDownChoice("quantity", selectionModel, choices) { protected String getDefaultChoice(final Object selected) { return ""; //get rid of "Choose One" default } public String getDisplayValue(Object object) { return object.toString(); } public String getIdValue(Object object, int index) { return object.toString(); } }); //create link w/ event handler item.add(new Link("removeLink") { public void onClick() { ............................ } }); } }.setOptimizeItemRemoval(true)); //must be set inside of form //add submit button form.add(new Button("qtyChangeButton") { public void onSubmit() { ................ } }); //add form to page add(form); } } ************************************************************************************ You'll see I declared my map at the top of the ctor: private Map<Configuration, Integer> selection = new HashMap<Configuration, Integer>(); Later, in the ListView I'm trying to match the users' Configuration objects so the quantity will automatically show in the DropDownChoice list in the page: IModel selectionModel = new Model() { public void setObject(Component c, Object o) { selection.put(config, Integer.parseInt((String)o)); } public Object getObject(Component c) { return selection.get(this); } }; However, the existing quantity does not get selected, it always defaults to zero, the first item in the list. The html renders like this: <select wicket:id="quantity" name="cartView:0:quantity"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select> Now, if I were to select a quantity and re-submit...it works correctly...that's not the issue...the only issue I have is the *existing* quantity for that Configuration object is not selected by default...it looks bad and if the user were to accidentally submit w/o first selecting a quantity, it would set it to zero and remove the item from the cart....eep! Igor had suggested that it was a data-type conversion issue IIRC, but I tried turning the array into Integers: List<Integer> choices = Arrays.asList( new Integer[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}); ...it didn't matter. When i walk through the debugger the model is getting populated...everything appears to go according to plan...I just can't nail this one! Thanks in advance, it's much appreciated!! ------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642 _______________________________________________ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user