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]

Reply via email to