Getting the following error. Not sure what I am doing wrong. I've seen
other JIRA issues opened along the same lines.
IllegalStateException when refreshing a WebMarkupContainer containing a
AjaxFallbackDefaultDataTable where one of the columns is a AjaxEditableLabel
which refreshes the markup container on submit
Attached is the html + page + component to recreate the issue.
Stack Trace as follows:
java.lang.IllegalStateException: No Page found for component
[MarkupContainer [Component id = cell, page = <No Page>, path =
1:cells:5:cell.QuantityLabel]]
at org.apache.wicket.Component.getPage(Component.java:1658)
at
org.apache.wicket.ajax.AjaxRequestTarget.respondComponent(AjaxRequestTarget.java:689)
at
org.apache.wicket.ajax.AjaxRequestTarget.respondComponents(AjaxRequestTarget.java:605)
at
org.apache.wicket.ajax.AjaxRequestTarget.respond(AjaxRequestTarget.java:520)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104)
at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1331)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:363)
at
org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
package da.web.wicket.test;
//~--- non-JDK imports --------------------------------------------------------
import java.util.ArrayList;
import java.util.List;
import da.web.wicket.structure.MainPageWithBorder;
import da.web.wicket.test.datatable.SortableContactDataProvider;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings(value="all")
public class TestAjaxDataTable extends MainPageWithBorder {
/**
*
*/
private static final long serialVersionUID = 1L;
static Logger logger = LoggerFactory.getLogger(TestAjaxDataTable.class);
public TestAjaxDataTable()
{
List columns = new ArrayList();
/*
columns.add(new AbstractColumn(new Model("Actions"))
{
public void populateItem(Item cellItem, String componentId, IModel model)
{
cellItem.add(new ActionPanel(componentId, model));
}
});
*/
WebMarkupContainer wmc = new WebMarkupContainer("container");
wmc.setOutputMarkupId(true);
add(wmc);
columns.add(new PropertyColumn(new Model("ID"), "id"));
columns.add(new PropertyColumn(new Model("First Name"), "firstName", "firstName"));
columns.add(new PropertyColumn(new Model("Last Name"), "lastName", "lastName"));
columns.add(new PropertyColumn(new Model("Home Phone"), "homePhone"));
EditableQuantityPropertyColumn eqpc = new EditableQuantityPropertyColumn(new Model("Cell Phone"), "cellPhone");
eqpc.setCartContainer(wmc);
columns.add(eqpc);
wmc.add(new AjaxFallbackDefaultDataTable("table", columns, new SortableContactDataProvider(), 8));
/*
AjaxFallbackDefaultDataTable dt = new AjaxFallbackDefaultDataTable("table");
add(dt);
*/
}
}
class EditableQuantityPropertyColumn extends PropertyColumn {
QuantityLabel ql;
WebMarkupContainer cartData;
/**
*
*/
private static final long serialVersionUID = 1L;
static Logger logger = LoggerFactory.getLogger(EditableQuantityPropertyColumn.class);
public EditableQuantityPropertyColumn(IModel model, String propertyExpression) {
super(model, propertyExpression);
}
public EditableQuantityPropertyColumn(IModel model, String sortOrder,
String propertyExpression) {
super(model, sortOrder, propertyExpression);
}
public void populateItem(Item item, String componentId, IModel model) {
IModel labelmodel = createLabelModel(model);
ql = new QuantityLabel(componentId, labelmodel, model);
ql.setCartContainer(getCartContainer());
item.add(ql);
}
protected IModel createLabelModel(IModel embeddedModel) {
IModel m = super.createLabelModel(embeddedModel);
return m;
}
public void setCartContainer(WebMarkupContainer d)
{
cartData = d;
}
public WebMarkupContainer getCartContainer()
{
return cartData;
}
}
class QuantityLabel extends AjaxEditableLabel
{
/**
*
*/
private static final long serialVersionUID = 1L;
static Logger logger = LoggerFactory.getLogger(QuantityLabel.class);
IModel originalmodel;
public QuantityLabel(String id, IModel model, IModel originalmodel)
{
super(id, model);
this.originalmodel = originalmodel;
}
@Override
protected void onSubmit(AjaxRequestTarget target)
{
target.addComponent(container);
super.onSubmit(target);
}
WebMarkupContainer container;
public void setCartContainer(WebMarkupContainer container) {
this.container = container;
}
}
// ~ Formatted by Jindent --- http://www.jindent.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]