ha! beat you by a minute!
-Igor
On 5/1/06, Vincent Jenks <[EMAIL PROTECTED]> wrote:
> nevermind, it came to me in a trance, I fixed it by doing the following:
>
> selection.put (config, (Integer)o);
>
> On 5/1/06, Vincent Jenks <[EMAIL PROTECTED]> wrote:
> > OK, I thought I had it working correctly...but I can't seem to figure
> > out why I'm getting a ClassCastException in the model now.
> >
> > It displays the correct quantity when the page is first pulled up
> > (after selecting an item & quantity on previous page) - but if I
> > change the quantity and re-submit on the Cart page I get this:
> >
> > java.lang.ClassCastException: java.lang.Integer
> > at
com.agribeef.abcommerce.ui.Cart$1$1.setObject(Cart.java:121)
> > at wicket.Component.setModelObject(Component.java:1908)
> >
> > Line 121 is commented:
> >
> > IModel selectionModel =
new Model()
> > {
> > public void
setObject(Component c, Object o)
> > {
> > //121:
CCE HAPPENS HERE
> >
selection.put(config, Integer.valueOf((String)o));
> > }
> >
> > public Object
getObject(Component c)
> > {
> > return
selection.get(config);
> > }
> > };
> >
> > If I'm selecting a string from the DropDownChoice as a value, why
> > would this barf?
> >
> > I think I've been staring at this code too long...I'm starting to trip
> > over my own toes.
> >
> > On 5/1/06, Vincent Jenks <[EMAIL PROTECTED]> wrote:
> > > 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
> > > > > > > > > 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?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
>