Man, that'd be nice.... On 5/1/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote:
no prob.for future ref keep in mind wicket works on objects. this will be easier when we have generics in 2.0 because then the decl would be DropDownChoice<T>(String id, IModel<T> selection, IModel<List<T>> choices) -Igor On 5/1/06, Vincent Jenks <[EMAIL PROTECTED]> wrote: > Ahh crap...that worked. I had been around in circles on this so many times that was the only combination I *hadn't* tried. Thanks Igor, I really appreciate it. On 5/1/06, Igor Vaynberg < [EMAIL PROTECTED]> wrote: > next thing is your choices need to be integers, because "10"!=10 > > > -Igor > > > On 5/1/06, Vincent Jenks < [EMAIL PROTECTED]> wrote: > > I set it to return selection.get(config) and it still doesn't select > anything. > > > > I have this now: > > > > 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(config); > > } > > }; > > > > ...which is still producing 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> > > > > I don't want to work directly on the cart object since I have a method > > in another class that accepts a Map....and I'm reusing that method > > throughout the cart. I don't want to write another method or alter > > the one I have to get around this issue. It works well as it takes > > the map apart, determines if the object already exists, adjusts the > > quantity, etc. I want all cart item additions, adjustments, etc. to > > flow thorugh this single method. > > > > On 5/1/06, Igor Vaynberg < [EMAIL PROTECTED]> wrote: > > > furthermore, if you wanted you can work on your cart object directly > instead > > > of having to translate to and from the map. > > > > > > -Igor > > > > > > > > > > > > On 5/1/06, Igor Vaynberg <[EMAIL PROTECTED]> wrote: > > > > > > > > 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); > > > > } > > > > }; > > > > > > > > > > > > in getObject() shouldnt that be return selection.get(config); > get(this) > > > will always return null. > > > > > > > > > > > > -Igor > > > > > > > > > > > > > > > > > > > > On 5/1/06, Vincent Jenks <[EMAIL PROTECTED] > wrote: > > > > > 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?cmdlnk&kid0709&bid&3057&dat1642 > > > > > _______________________________________________ > > > > > Wicket-user mailing list > > > > > [email protected] > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > 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?cmdlnk&kid0709&bid&3057&dat1642 > > _______________________________________________ > > Wicket-user mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > ------------------------------------------------------- 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?cmdlnk&kid0709&bid&3057&dat1642 _______________________________________________ Wicket-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user
------------------------------------------------------- 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 [email protected] https://lists.sourceforge.net/lists/listinfo/wicket-user
