<s:fileupload>返回空值</s:fileupload>

时间:2013-04-16 08:04:28

标签: java seam seam2

使用<s:fileUpload>组件进行文件上传时返回null。

应用程序使用seam 2.1.2与Richfaces集成,Jsf

<h:panelGrid columns="2" cellspacing="1" cellpadding="0"
   columnClasses="columnFull">
<s:fileUpload id="picture" data="#{image.uploadedFile}"

    contentType="#{image.pictureContentType}" />

</h:panelGrid>


@Name("image")
@Scope(ScopeType.CONVERSATION)
public class DoImportServiceUpload {


      @Lob
      @Column(length = 2147483647)
      private  byte[] uploadedFile;

      private String pictureContentType;

}

的web.xml

<filter>
  <filter-name>Seam Filter</filter-name>
  <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
  <filter-mapping>
  <filter-name>Seam Filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

的components.xml

<web:multipart-filter create-temp-files="true"
                      max-request-size="1000000" 
                      url-pattern="*.seam" />

1 个答案:

答案 0 :(得分:2)

  1. 在Seam MultiPartFilter中放置一个断点。使用远程调试连接到应用程序服务器。检查过滤器是否实际被触发,以及是否找到文件上载。
  2. 如果没有,则POST请求中可能不存在文件上载。在Google Chrome中检查是否实际使用正确的内容类型发送了fileUpload。
  3. 检查s:fileUpload标记是否实际包含在单个h:form中。 h:form应为<h:form enctype="multipart/form-data">类型。检查这是否也在HTML输出中正确呈现。