Scott,
have you tried attaching a PropertyModel to the textfields like so:
add(descriptionField = new TextField("description", new
PropertyModel(guideline, "description"));
- Johannes
Scott Sauyet wrote:
Okay, I've been staring at this for hours, and not making any
progress. Maybe that's because it 4:30 in the morning here in
Connecticut, USA, and my brain isn't what it should be, but regardless...
I'm attaching a class that's giving me great anguish. If anyone has a
few minutes to look at it to see if there is some glaring mistake, I
would be forever grateful. This is a view/edit class for a POJO named
Guideline, which has the following signature:
public String getDescription();
public void setDescription(String newDescription);
public String getFilename();
public void setFilename(String newFilename);
public Set getBusinessUnits();
public void setBusinessUnits(Set newBusinessUnits);
[ ... ]
The trouble is that at the end of the constructor for the inner
InputForm class, my model object has all its properties set
appropriately, but when I hit the onSubmit() method, the filename
property is correct but the description is null and the Set of
BusinessUnits is empty.
Any thoughts on what I'm doing wrong?
-- Scott Sauyet
------------------------------------------------------------------------
package com.thomson.bc.upload;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import wicket.AttributeModifier;
import wicket.Page;
import wicket.Resource;
import wicket.contrib.palette.Palette;
import wicket.markup.html.WebPage;
import wicket.markup.html.basic.Label;
import wicket.markup.html.form.ChoiceRenderer;
import wicket.markup.html.form.Form;
import wicket.markup.html.form.ImageButton;
import wicket.markup.html.form.ListMultipleChoice;
import wicket.markup.html.form.TextField;
import wicket.markup.html.form.upload.FileUpload;
import wicket.markup.html.form.upload.FileUploadField;
import wicket.markup.html.link.BookmarkablePageLink;
import wicket.markup.html.link.IPageLink;
import wicket.markup.html.link.PageLink;
import wicket.markup.html.link.ResourceLink;
import wicket.model.CompoundPropertyModel;
import wicket.model.Model;
import wicket.util.time.Time;
import wicket.util.file.Folder;
import wicket.util.resource.IResourceStream;
import wicket.util.resource.FileResourceStream;
import wicket.util.resource.ResourceStreamNotFoundException;
public class GuidelineEdit extends WebPage {
public GuidelineEdit() {
add(new BookmarkablePageLink("admin_main", Main.class));
add(new InputForm("theForm", new Guideline(), true));
}
public GuidelineEdit(Guideline guideline) {
add(new BookmarkablePageLink("admin_main", Main.class));
add(new InputForm("theForm", guideline, false));
}
public static PageLink link(final String name, final Guideline guideline) {
return new PageLink(name, new IPageLink() {
public Page getPage() {
return new GuidelineEdit(guideline);
}
public Class getPageIdentity() {
return GuidelineEdit.class;
}
});
}
private static class InputForm extends Form {
// private Guideline guideline;
private Folder uploadFolder;
private FileUploadField fileUploadField;
private List businessUnits;
private List selectedBusinessUnits;
private boolean brandNew;
private TextField descriptionField;
public InputForm(String name, Guideline guideline, boolean brandNew) {
super(name, new CompoundPropertyModel(guideline));
this.brandNew = brandNew;
// this.guideline = guideline;
long time = System.currentTimeMillis();
uploadFolder = new Folder("C:\\_Temp\\ThomsonUploads\\" + time);
businessUnits = BusinessUnit.getAllBusinessUnits();
selectedBusinessUnits = new ArrayList();
selectedBusinessUnits.addAll(guideline.getBusinessUnits());
add(new Label("pageAction", (brandNew ? "Upload a Guideline" : "Edit
Guideline")));
add(new Palette("businessUnits", new Model((Serializable) selectedBusinessUnits), new
Model((Serializable) businessUnits), new ChoiceRenderer("name", "id"), 10, false));
add(new ImageButton("saveButton"));
add(new ImageButton("cancelButton"));
add(descriptionField = new TextField("description"));
add(fileUploadField = new FileUploadField("file"));
fileUploadField.setVisible(brandNew ? true : false);
final String filename = guideline.getFilename();
ResourceLink link;
add(link = new ResourceLink("fileLink", new Resource() {
public IResourceStream getResourceStream() {
return new FileResourceStream(new
wicket.util.file.File(filename)) {
public String getContentType() {
if (filename.toLowerCase().endsWith(".doc")) {
return "application/msword";
}
return super.getContentType();
}
};
}
}));
link.add(new Label("existingFile", guideline.getFilename()));
link.setVisible(brandNew ? false : true);
}
public void onSubmit() {
Guideline guideline = (Guideline) getModelObject();
if (brandNew) {
uploadFolder.mkdirs();
FileUpload fileUpload = fileUploadField.getFileUpload();
String filename = fileUpload.getFile().getName();
File file = new File(uploadFolder, filename);
try {
fileUpload.writeTo(file);
guideline.setFilename(file.toString());
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
guideline.setDescription(descriptionField.getModelObjectAsString());
guideline.getBusinessUnits().removeAll(businessUnits);
guideline.getBusinessUnits().addAll(selectedBusinessUnits);
guideline.save();
getRequestCycle().setResponsePage(GuidelineViewList.class);
}
}
}
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user