Palette nested in a ListView results in a NPE when an error feedback is logged
when submitting form
---------------------------------------------------------------------------------------------------
Key: WICKET-2852
URL: https://issues.apache.org/jira/browse/WICKET-2852
Project: Wicket
Issue Type: Bug
Affects Versions: 1.4.7
Reporter: Robin Shine
Priority: Minor
Reproducing steps:
1. Put TestPage.html and TestPage.java into a wicket application, visit test
page.
2. Hit the save button and NullPointerException will be thrown indicating the
"ids" field of component Palette$Recorder is not initialized
If taken Palette outside of ListView, the code will work fine.
TestPage.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form wicket:id="form">
<div wicket:id="palettes">
<div wicket:id="palette"></div>
</div>
<input type="submit" value="save"></input>
</form>
<div wicket:id="feedback"></div>
</body>
</html>
TestPage.java:
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.extensions.markup.html.form.palette.Palette;
import org.apache.wicket.feedback.ContainerFeedbackMessageFilter;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
public class TestPage extends WebPage {
@SuppressWarnings({ "unchecked", "serial" })
public TestPage() {
Form form = new Form("form") {
@Override
protected void onSubmit() {
error("Please select a value.");
}
};
add(form);
List<String> list = new ArrayList<String>();
list.add("1");
form.add(new ListView("palettes", list) {
@Override
protected void populateItem(ListItem item) {
IChoiceRenderer renderer = new IChoiceRenderer() {
public Object getDisplayValue(Object
object) {
return object;
}
public String getIdValue(Object object,
int index) {
return (String) object;
}
};
final List selected = new ArrayList();
IModel model = new IModel() {
public Object getObject() {
return selected;
}
public void setObject(Object object) {
selected.clear();
selected.addAll((List) object);
}
public void detach() {
}
};
IModel choicesModel = new AbstractReadOnlyModel() {
@Override
public Object getObject() {
final List<String> choices = new
ArrayList<String>();
choices.add("1");
choices.add("2");
return choices;
}
};
item.add(new Palette("palette", model,
choicesModel, renderer, 10, false));
}
});
add(new FeedbackPanel("feedback", new
ContainerFeedbackMessageFilter(this)));
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.