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
> > > > Wicket-user@lists.sourceforge.net
> > > >
> >
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
> Wicket-user@lists.sourceforge.net
> 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
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to