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

Reply via email to