1

使用组件进行文件上传时<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>

组件.xml

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

1 回答 1

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