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?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