Java:上传文件时出现问题

发布于 2024-10-09 08:47:13 字数 2982 浏览 0 评论 0原文

使用 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)

Using Java (Seam + JBoss) and having a lot of difficulty trying to update a file.

I'm using the Seam fileUpload tag and have the form encoding type set as "multipart/form-data". When I select a file and submit the form, however, I'm getting an exception.

The form code is as follows:

<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}"/>
       
      <s:button id="cancel" value="Cancel" view="/home.xhtml"/>
     </div>

The exception I'm getting is as follows:

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

脸赞 2024-10-16 08:47:13

NullPointerException

您应该了解指针。

在某个地方你没有说Foo foo = new Foo()。我敢打赌,堆栈跟踪中还有大约 3 行会告诉我们位置。除非您自己调用 org.jboss.seam.web.MultipartRequestImpl.parseRequest 。

NullPointerException

You should learn about pointers.

Somewhere you didn't say Foo foo = new Foo(). I bet about 3 more lines down the stack trace will tell us where. Unless you called org.jboss.seam.web.MultipartRequestImpl.parseRequest yourself.

夜巴黎 2024-10-16 08:47:13

我们这里使用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();
   }
}

We used richfaces to upload here:

<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();
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文