Or, copy the Start class from a quickstart application (provided your src paths are set up the same way).
On Thu, Nov 6, 2008 at 12:56 PM, Igor Vaynberg <[EMAIL PROTECTED]> wrote: > google tomcat remote debugging > > -igor > > On Thu, Nov 6, 2008 at 9:53 AM, Steve Swinsburg > <[EMAIL PROTECTED]> wrote: >> Ok I just thought that using the WicketServlet rather than the WicketFilter >> might have something to do with it, or the different filters being applied >> could be intercepting the form requests (not necessarily Sakai specific). >> >> Setting breakpoints might be difficult as my code runs in an external >> Tomcat, rather than in anything Eclipse knows about - ie Eclipse doesn't do >> any building/deployment. And I'm not 100% down with the classloading of >> Sakai. But I'll give it a shot. >> >> thanks >> >> >> >> >> >> On 6 Nov 2008, at 17:38, Igor Vaynberg wrote: >> >>> im not familiar with sakai so i cant really help there. like i said, >>> set a breakpoint in getfileupload and see why it returns null. you can >>> also try setting a breakpoint in form.onformsubmitted() and tracing >>> how it is processing multipart. >>> >>> -igor >>> >>> On Thu, Nov 6, 2008 at 9:28 AM, Steve Swinsburg >>> <[EMAIL PROTECTED]> wrote: >>>> >>>> Ok I generated a quickstart and added a form with a FileUploadField, it >>>> all >>>> worked. >>>> >>>> This made me think that it was some changes I made in the web.xml file >>>> for >>>> the original webapp - I am not running it as a normal webapp, but rather >>>> inside another web framework (Sakai). As such, I needed to make some >>>> changes >>>> to the web.xml in order for it to register itself with Sakai. Once I did >>>> this to the quickstart, uploads failed again. >>>> >>>> Can you think of anything I have changed that would be affecting this? >>>> There >>>> are other tools for Sakai written in Wicket which have fileuploads >>>> working, >>>> and my web.xml is essentially the same. Could there be anything else that >>>> is >>>> affecting it? >>>> >>>> The web.xml for the quickstart is this: >>>> >>>> <?xml version="1.0" encoding="ISO-8859-1"?> >>>> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee >>>> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >>>> version="2.4"> >>>> >>>> <display-name>file-upload</display-name> >>>> >>>> <!-- Sakai request filter --> >>>> <filter> >>>> <filter-name>sakai.request</filter-name> >>>> >>>> <filter-class>org.sakaiproject.util.RequestFilter</filter-class> >>>> </filter> >>>> <filter-mapping> >>>> <filter-name>sakai.request</filter-name> >>>> <servlet-name>file.upload</servlet-name> >>>> <dispatcher>REQUEST</dispatcher> >>>> <dispatcher>FORWARD</dispatcher> >>>> <dispatcher>INCLUDE</dispatcher> >>>> </filter-mapping> >>>> >>>> <!-- >>>> <filter> >>>> <filter-name>sakai.profile2.tool</filter-name> >>>> >>>> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> >>>> <init-param> >>>> <param-name>applicationClassName</param-name> >>>> >>>> >>>> <param-value>uk.ac.lancs.e_science.profile2.tool.ProfileApplication</param-value> >>>> </init-param> >>>> </filter> >>>> --> >>>> >>>> <!-- >>>> <filter-mapping> >>>> <filter-name>sakai.profile2.tool</filter-name> >>>> <url-pattern>/sakai-profile2-tool/*</url-pattern> >>>> </filter-mapping> >>>> --> >>>> >>>> <!-- Change the 'applicationBean' param value to the name of your >>>> application as >>>> listed under the applicationContext.xml --> >>>> <servlet> >>>> <servlet-name>file.upload</servlet-name> >>>> >>>> >>>> <servlet-class>org.apache.wicket.protocol.http.WicketServlet</servlet-class> >>>> >>>> <init-param> >>>> <param-name>applicationFactoryClassName</param-name> >>>> >>>> >>>> <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value> >>>> </init-param> >>>> <init-param> >>>> <param-name>applicationBean</param-name> >>>> <param-value>uploadApplication</param-value> >>>> </init-param> >>>> </servlet> >>>> >>>> <!-- Wicket likes to have a url-pattern mapping even though Sakai >>>> doesn't use it. --> >>>> <servlet-mapping> >>>> <servlet-name>file.upload</servlet-name> >>>> <url-pattern>/file-upload/*</url-pattern> >>>> </servlet-mapping> >>>> >>>> <context-param> >>>> <param-name>configuration</param-name> >>>> <param-value>development</param-value> >>>> <!-- <param-value>deployment</param-value> --> >>>> </context-param> >>>> >>>> <!-- Sakai listeners --> >>>> <listener> >>>> >>>> <listener-class>org.sakaiproject.util.ToolListener</listener-class> >>>> </listener> >>>> <listener> >>>> >>>> >>>> <listener-class>org.sakaiproject.util.ContextLoaderListener</listener-class> >>>> </listener> >>>> </web-app> >>>> >>>> >>>> and the applicationContext.xml: >>>> >>>> >>>> <?xml version="1.0" encoding="UTF-8"?> >>>> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" >>>> "http://www.springframework.org/dtd/spring-beans.dtd"> >>>> >>>> <beans> >>>> >>>> <!-- The id of this bean needs to match the param 'applicationBean' >>>> under your web.xml --> >>>> <bean id="uploadApplication" class="com.steve.WicketApplication" /> >>>> >>>> </beans> >>>> >>>> >>>> thanks, >>>> Steve >>>> >>>> >>>> On 6 Nov 2008, at 16:03, Igor Vaynberg wrote: >>>> >>>>> code looks ok, interesting. >>>>> >>>>> there are two things we can do: a) you can create a quickstart that >>>>> reproduces the problem >>>>> b) you can set a breakpoint in fileuploadfield#getfileupload() and see >>>>> why it returns null >>>>> >>>>> a couple of other notes: >>>>> >>>>> since you are getting fileupload yourself there is no need to give the >>>>> field a model >>>>> you are passing in userprofile directly into the panel, most likely it >>>>> needs to be a loadabledetachablemodel that can load it from the db. >>>>> >>>>> -igor >>>>> >>>>> On Thu, Nov 6, 2008 at 3:41 AM, Steve Swinsburg >>>>> <[EMAIL PROTECTED]> wrote: >>>>>> >>>>>> Sure thing. Essentially, a POJO called UserProfile is a param of the >>>>>> constructor for the form. One thing that is probably the issue is that >>>>>> I >>>>>> wasn't sure how to assign an upload field to a corresponding attribute >>>>>> in >>>>>> the POJO, is this even necessary? >>>>>> Its so simple so at this stage its all in the constructor for the >>>>>> class: >>>>>> public class ChangeProfilePicture extends Panel{ >>>>>> >>>>>> >>>>>> >>>>>> private FileUploadField uploadField; >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> public ChangeProfilePicture(String id, UserProfile userProfile) { >>>>>> super(id); >>>>>> >>>>>> >>>>>> >>>>>> //create model >>>>>> CompoundPropertyModel userProfileModel = new >>>>>> CompoundPropertyModel(userProfile); >>>>>> >>>>>> >>>>>> >>>>>> //setup form >>>>>> Form form = new Form("form", userProfileModel) { >>>>>> public void onSubmit(){ >>>>>> >>>>>> //get the backing model >>>>>> UserProfile userProfile = (UserProfile) this.getModelObject(); >>>>>> >>>>>> //get uploaded file, get the bytes and set into sakaiPerson. >>>>>> if (uploadField != null) { >>>>>> System.out.println("1 - uploadField not null"); >>>>>> FileUpload upload = uploadField.getFileUpload(); >>>>>> if(upload != null) { >>>>>> System.out.println("2 - upload not null"); >>>>>> byte[] photoBytes = upload.getBytes(); >>>>>> } >>>>>> } >>>>>> >>>>>> } >>>>>> >>>>>> }; >>>>>> >>>>>> form.setOutputMarkupId(true); >>>>>> form.setMultiPart(true); >>>>>> >>>>>> >>>>>> >>>>>> //text >>>>>> Label textSelectImage = new Label("textSelectImage", new >>>>>> ResourceModel("text.upload.image.file")); >>>>>> form.add(textSelectImage); >>>>>> >>>>>> //upload >>>>>> uploadField = new FileUploadField("picture", new >>>>>> PropertyModel(userProfile, >>>>>> "picture")); >>>>>> form.add(uploadField); >>>>>> >>>>>> //submit button >>>>>> Button submitButton = new Button("submit", new >>>>>> ResourceModel("button.upload")); >>>>>> >>>>>> form.add(submitButton); >>>>>> >>>>>> //add form to page >>>>>> add(form); >>>>>> } >>>>>> >>>>>> } >>>>>> >>>>>> Thanks for any assistance. >>>>>> >>>>>> >>>>>> cheers, >>>>>> Steve >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On 6 Nov 2008, at 11:34, James Carman wrote: >>>>>> >>>>>> Can you share your code that builds up the component hierarchy? At >>>>>> least the relevant parts? We'll need to see what kind of model the >>>>>> form has and stuff like that. >>>>>> >>>>>> On Thu, Nov 6, 2008 at 5:58 AM, Steve Swinsburg >>>>>> <[EMAIL PROTECTED]> wrote: >>>>>> >>>>>> Nope, the form works fine, it just never reaches the line: >>>>>> >>>>>> System.out.println("2 - upload not null"); >>>>>> >>>>>> Or do you mean HTML validation errors? Thats fine as well: >>>>>> >>>>>> <wicket:panel> >>>>>> >>>>>> <form wicket:id="form" class="profileForm"> >>>>>> >>>>>> <p wicket:id="textSelectImage" class="small">Select an image</p> >>>>>> >>>>>> <p><input type="file" wicket:id="picture"/></p> >>>>>> >>>>>> <p><input type="submit" wicket:id="submit" value="Upload" /></p> >>>>>> >>>>>> </form> >>>>>> >>>>>> </wicket:panel> >>>>>> >>>>>> This panel is shown by a jQuery slideToggle() after someone clicks on a >>>>>> >>>>>> button, but its a normal form submit. Even when the form is always >>>>>> visible, >>>>>> >>>>>> ie no Javascript to show it, same thing. >>>>>> >>>>>> Any ideas? >>>>>> >>>>>> Thanks >>>>>> >>>>>> >>>>>> On 5 Nov 2008, at 18:33, Igor Vaynberg wrote: >>>>>> >>>>>> are there validation errors? >>>>>> >>>>>> -igor >>>>>> >>>>>> On Wed, Nov 5, 2008 at 10:14 AM, Steve Swinsburg >>>>>> >>>>>> <[EMAIL PROTECTED]> wrote: >>>>>> >>>>>> Hi all, >>>>>> >>>>>> I'm having an odd problem in uploading a file where the result of: >>>>>> >>>>>> FileUpload upload = uploadField.getFileUpload(); >>>>>> >>>>>> is always null. I can't see what I've done wrong. >>>>>> >>>>>> Here's part of my onSubmit method which works for textfields, but not >>>>>> >>>>>> fileuploads. It's a normal fileupload by the way (so its not an AJAX >>>>>> issue): >>>>>> >>>>>> public void onSubmit(){ >>>>>> >>>>>> if (uploadField != null) { >>>>>> >>>>>> System.out.println("1 - uploadField not null"); >>>>>> >>>>>> FileUpload upload = uploadField.getFileUpload(); >>>>>> >>>>>> if(upload != null) { >>>>>> >>>>>> System.out.println("2 - upload not null"); >>>>>> >>>>>> byte[] photoBytes = upload.getBytes(); >>>>>> >>>>>> } >>>>>> >>>>>> } >>>>>> >>>>>> } >>>>>> >>>>>> where uploadField is defined in the class like so: >>>>>> >>>>>> private FileUploadField uploadField; >>>>>> >>>>>> and then added to the form: >>>>>> >>>>>> uploadField = new FileUploadField("picture"); >>>>>> >>>>>> form.add(uploadField); >>>>>> >>>>>> So the form works as expected for textfields but not fileuploads. Can >>>>>> anyone >>>>>> >>>>>> spot any issues/give me pointers? The form is multipart encoded. >>>>>> >>>>>> >>>>>> thanks. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>> >>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>> >>>>>> >>>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
