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]
