Hi,
When I am having a fileUpload in a form, the wicket ajax debug throw the
following error:
"An error occurred while executing Ajax request:TypeError: object is not a
function"
and my ajaxsubmitlink actions onSubmit() or onError() are not called (so
nothing happens).
I am not sure if I am doing something wrong, if this is expected or if this
is a bug.
Here is a simple code that I used:
TestPage.java:
public final class TestPage extends PersistancePanel {
public TestPage(String id, Eventmgr em) {
super(id);
Form form = new TestPage.TestPageForm("eventCreationForm", em);
form.setMultiPart(true); // Enable multipart mode (need for uploads
file)
form.setMaxSize(Bytes.kilobytes(128));
form.setModel(new CompoundPropertyModel(em));
add(form);
public final class TestPageForm extends Form<Eventmgr> {
public TestPageForm(final String id, Eventmgr eventMgr) {
super(id);
add(new FileUploadField("fileUpload"));
final WebMarkupContainer wmc2 = new WebMarkupContainer("wmc");
wmc2.setOutputMarkupId(true);
RefreshingView rv = new RefreshingView<Event>("subEventForm") {
@Override
//protected void populateItem(ListItem item) {
protected void populateItem(Item<Event> item) {
final Event event = (Event) item.getModelObject();
item.add(new TextArea<>("descr2", new
PropertyModel<String>(event, "descr")));
@Override
protected Iterator<IModel;Event>> getItemModels() {
return eventMgr.getILevents().iterator();
};
rv.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
wmc2.add(rv);
add(wmc2);
AjaxSubmitLink addSubevent = new AjaxSubmitLink("addSubevent",
this) {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
eventMgr.getEvents().add(new Event());
System.out.println("OK");
target.add(wmc2);
};
addSubevent.setDefaultFormProcessing(false);
add(addSubevent);
@Override
protected void onSubmit() {
System.out.println("submit done");
TestPage.html
<html xmlns:wicket>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>CreateEvent</title>
</head>
<body>
<wicket:panel>
<form wicket:id="eventCreationForm">
<strong><wicket:message key="event.addposter"/>:
</strong> <input wicket:id="fileUpload" type="file"/>
<div wicket:id="wmc">
<wicket:message key="event.description"/>:
<textarea name="description2" wicket:id="descr2" rows="2"
cols="40"></textarea>
</div>
+ <#> <wicket:message key="event.subevent.add"/> <br/>
<input type="submit" name="submit"/>
</form>
</wicket:panel>
</body>
</html>
Thank you for your help,
Cojy.
When I am having a fileUpload in a form, the wicket ajax debug throw the
following error:
"An error occurred while executing Ajax request:TypeError: object is not a
function"
and my ajaxsubmitlink actions onSubmit() or onError() are not called (so
nothing happens).
I am not sure if I am doing something wrong, if this is expected or if this
is a bug.
Here is a simple code that I used:
TestPage.java:
public final class TestPage extends PersistancePanel {
public TestPage(String id, Eventmgr em) {
super(id);
Form form = new TestPage.TestPageForm("eventCreationForm", em);
form.setMultiPart(true); // Enable multipart mode (need for uploads
file)
form.setMaxSize(Bytes.kilobytes(128));
form.setModel(new CompoundPropertyModel(em));
add(form);
public final class TestPageForm extends Form<Eventmgr> {
public TestPageForm(final String id, Eventmgr eventMgr) {
super(id);
add(new FileUploadField("fileUpload"));
final WebMarkupContainer wmc2 = new WebMarkupContainer("wmc");
wmc2.setOutputMarkupId(true);
RefreshingView rv = new RefreshingView<Event>("subEventForm") {
@Override
//protected void populateItem(ListItem item) {
protected void populateItem(Item<Event> item) {
final Event event = (Event) item.getModelObject();
item.add(new TextArea<>("descr2", new
PropertyModel<String>(event, "descr")));
@Override
protected Iterator<IModel;Event>> getItemModels() {
return eventMgr.getILevents().iterator();
};
rv.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
wmc2.add(rv);
add(wmc2);
AjaxSubmitLink addSubevent = new AjaxSubmitLink("addSubevent",
this) {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
eventMgr.getEvents().add(new Event());
System.out.println("OK");
target.add(wmc2);
};
addSubevent.setDefaultFormProcessing(false);
add(addSubevent);
@Override
protected void onSubmit() {
System.out.println("submit done");
TestPage.html
<html xmlns:wicket>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>CreateEvent</title>
</head>
<body>
<wicket:panel>
<form wicket:id="eventCreationForm">
<strong><wicket:message key="event.addposter"/>:
</strong> <input wicket:id="fileUpload" type="file"/>
<div wicket:id="wmc">
<wicket:message key="event.description"/>:
<textarea name="description2" wicket:id="descr2" rows="2"
cols="40"></textarea>
</div>
+ <#> <wicket:message key="event.subevent.add"/> <br/>
<input type="submit" name="submit"/>
</form>
</wicket:panel>
</body>
</html>
Thank you for your help,
Cojy.