Hi,
I'm really new to wicket and I'm trying to learn about with wicket in
action.
Now the problem: I've initialized a project trought maven quikstart version:
1.5rc1.
A first test with the jetty engine work as aspected.
the session is implemented with the following class:
public class CheesrSession extends WebSession {
private Cart cart = new Cart();
public CheesrSession(Request request) {
super(request);
}
public Cart getCart(){
return cart;
}
}
and with the getHomePage method in the extended WebApplication:
public Class getHomePage() {
return Index.class;
}
I call the index page:
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.PropertyModel;
/**
*
* @author saverioscavelli
*/
public class Index extends CheesrPage {
//private static final long serialVersionUID = 1L;
public Index() {
add(new ListView(cheeses, getCheeses()) {
@Override
protected void populateItem(ListItem item) {
//throw new UnsupportedOperationException(Not supported
yet.);
Cheese cheese = (Cheese) item.getModelObject();
item.add(new Label(name, cheese.getName()));
item.add(new Label(description, cheese.getDesciption()));
item.add(new Label(price, $ + cheese.getPrice()));
item.add(new Link(add, item.getModel()) {
@Override
public void onClick() {
//throw new UnsupportedOperationException(Not
supported yet.);
Cheese selected = (Cheese) getModelObject();
getCart().getCheeses().add(selected);
}
});
}
});
add(new ListView(cart, new PropertyModel(this, cart.cheeses)) {
@Override
protected void populateItem(ListItem item) {
//throw new UnsupportedOperationException(Not supported
yet.);
Cheese cheese = (Cheese) item.getModelObject();
item.add(new Label(name, cheese.getName()));
item.add(new Label(price, $+ cheese.getPrice()));
item.add(new Link(remove, item.getModel()) {
@Override
public void onClick() {
//throw new UnsupportedOperationException(Not
supported yet.);
Cheese selected = (Cheese) getModelObject();
getCart().getCheeses().remove(selected);
}
});
}
});
add(new Label(total, $+ getCart().getTotal()));
}
}
the index page extends the CheesrPage:
import java.util.List;
import org.apache.wicket.markup.html.WebPage;
/**
*
* @author saverioscavelli
*/
public abstract class CheesrPage extends WebPage {
public CheesrSession getCheesrSession(){
return (CheesrSession) getSession();
}
public Cart getCart(){
return getCheesrSession().getCart();
}
public ListCheese getCheeses(){
return WicketApplication.get().getCheeses();
}
}
unfortunately I recive an Error that I dont really anderstand:
Unexpected RuntimeException
WicketMessage: Can't instantiate page using constructor public
babilo.cheeser.cheesr.Index()
Stacktrace
Root cause:
java.lang.ClassCastException: org.apache.wicket.protocol.http.WebSession
cannot be cast to babilo.cheeser.cheesr.CheesrSession
at
babilo.cheeser.cheesr.CheesrPage.getCheesrSession(CheesrPage.java:31)
at babilo.cheeser.cheesr.CheesrPage.getCart(CheesrPage.java:35)
at babilo.cheeser.cheesr.Index.init(Index.java:81)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:155)
at
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:59)
at
org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:43)
at
org.apache.wicket.Application$2.newPageInstance(Application.java:1157)
at
org.apache.wicket.request.handler.PageProvider.getPageInstance(PageProvider.java:259)
at
org.apache.wicket.request.handler.PageProvider.getPageInstance(PageProvider.java:160)
at
org.apache.wicket.request.handler.render.WebPageRenderer.getPage(WebPageRenderer.java:59)
at
org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:212)
at
org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:149)
at
org.apache.wicket.request.RequestHandlerStack.executeRequestHandler(RequestHandlerStack.java:84)
at