Java: проблема с загрузкой файлов - PullRequest
0 голосов
/ 30 декабря 2010

Использование Java (Seam + JBoss) и много трудностей при попытке обновить файл.

Я использую тег Seam fileUpload, и тип кодировки формы установлен как «multipart / form-data». Однако когда я выбираю файл и отправляю форму, я получаю исключение.

Код формы выглядит следующим образом:

<h:form id="registration" enctype="multipart/form-data">
                    <h:outputText value="#{messages['profile.title']}"/>
    <fieldset>
    
     <!-- s:decorate id="usernameDecorate" template="edit.xhtml" -->
      <ui:define name="label">Name:</ui:define>
      <h:inputText id="name" value="#{editProfileAction.editProfileFormData.name}" required="true">
       <!-- a:support id="onblur" event="onblur" reRender="usernameDecorate"/ -->
      </h:inputText>
     <!-- /s:decorate -->
     
     <!-- s:decorate id="usernameDecorate" template="edit.xhtml" -->
      <ui:define name="label">Email:</ui:define>
      <h:inputText id="email" value="#{editProfileAction.editProfileFormData.email}" required="true">
       <!--  a:support id="onblur" event="onblur" reRender="usernameDecorate"/-->
      </h:inputText>
     <!-- /s:decorate -->
     
     <ui:define name="label">#{messages['profile.fieldlabel.photo']}</ui:define>
     
     <s:fileUpload id="file" name="file"
      data="#{editProfileAction.editProfileFormData.data}"
      contentType="#{editProfileAction.editProfileFormData.contentType}"
      fileName="#{editProfileAction.editProfileFormData.filename}"
      fileSize="#{editProfileAction.editProfileFormData.size}" />
     
     
     <div class="buttonBox">
      <h:commandButton id="saveButton" value="Save" action="#{editProfileAction.update}"/>
      &#160;
      <s:button id="cancel" value="Cancel" view="/home.xhtml"/>
     </div>

Исключение, которое я получаю, выглядит следующим образом:

Exception during request processing:
Caused by java.lang.NullPointerException with message: ""

org.jboss.seam.web.MultipartRequestImpl.parseRequest(MultipartRequestImpl.java:391)
org.jboss.seam.web.MultipartRequestImpl.getParameterNames(MultipartRequestImpl.java:530)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:84)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

Ответы [ 2 ]

0 голосов
/ 30 декабря 2010

Мы использовали richfaces для загрузки здесь:

<rich:fileUpload id="fileUpload"
   progressLabel="Uploading"
   maxFilesQuantity="10"
   listHeight="90px"
   listWidth="400px"
   addControlLabel="Select"
   noDuplicate="true"
   fileUploadListener="#{someJavaHome.uploadFile}"
   clearAllControlLabel="Clear"
   uploadControlLabel="Add Files"
   doneLabel="Done"
   cancelEntryControlLabel="Cancel"
   clearControlLabel="Clear"
   transferErrorLabel="Oops! Upload didn't work out."
   sizeErrorLabel="Cannot be bigger than 1MB"> 
</rich:fileUpload>


public void uploadFile(UploadEvent uploadEvent) throws IOException{
   try {
      if(uploadEvent == null){
         return;
      }

      for (UploadItem uploadItem : uploadEvent.getUploadItems()) {
         if(!this.uploadItems.contains(uploadItem)){
            this.uploadItems.add(uploadItem);
         }
      }

   } catch (Exception e) {
      e.printStackTrace();
   }
}
0 голосов
/ 30 декабря 2010

NullPointerException

Вы должны узнать об указателях.

Где-то, что ты не сказал Foo foo = new Foo(). Бьюсь об заклад, еще около 3 строк вниз по трассе стека покажет нам, где. Если только вы сами не позвонили org.jboss.seam.web.MultipartRequestImpl.parseRequest.

...