Xmlhttprequest 了解seam筛选器url模式和可能的冲突

Xmlhttprequest 了解seam筛选器url模式和可能的冲突,xmlhttprequest,servlet-filters,seam,multipartform-data,Xmlhttprequest,Servlet Filters,Seam,Multipartform Data,我在Seam 2.2.2项目中制作了一个自定义编辑器插件,它可以通过以下方式上传文件: 1) 配置编辑器以加载我的特定xhtml上载页面 2) 在此页面内调用以下方法,并返回javascript回调 public String sendImageToServer() { HttpServletRequest request = ServletContexts.instance().getRequest(); try {

我在Seam 2.2.2项目中制作了一个自定义编辑器插件,它可以通过以下方式上传文件:

1) 配置编辑器以加载我的特定xhtml上载页面

2) 在此页面内调用以下方法,并返回javascript回调

public String sendImageToServer()
    {
        HttpServletRequest request = ServletContexts.instance().getRequest();
        try
        {
            List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
            processItems(items);//set the file data to specific att
            saveOpenAttachment();//save the file to disk
        }
        //build callback
公共字符串sendImageToServer()
{
HttpServletRequest=ServletContexts.instance().getRequest();
尝试
{
列表项=新建ServletFileUpload(新建DiskFileItemFactory()).parseRequest(请求);
processItems(items);//将文件数据设置为特定att
saveOpenAttachment();//将文件保存到磁盘
}
//生成回调
要使其正常工作,我必须将其放入components.xml中:

<web:multipart-filter create-temp-files="false"  
                  max-request-size="1024000" url-pattern="*"/> 

“创建临时文件”属性的值似乎并不重要。 但是url模式必须是“”或“/myUploadPage.seam”,任何其他值都会使项目列表返回空。有人知道为什么吗

这就变成了一个问题,因为当我使用适用于这种情况的url模式时,应用程序中每个带有enctype=“multipart/form data”的表单都会停止提交数据。因此,我最终导致系统的其他部分崩溃。
有人能帮我吗?

为了解决我的问题,我将解决方案更改为类似Seam multipart filter handle请求:

ServletRequest request = (ServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
    try
    {
      if (!(request instanceof MultipartRequest))
      {
         request = unwrapMultipartRequest(request);
      }

      if (request instanceof MultipartRequest)
      {
         MultipartRequest multipartRequest = (MultipartRequest) request;

         String clientId = "upload";
         setFileData(multipartRequest.getFileBytes(clientId));
         setFileContentType(multipartRequest.getFileContentType(clientId));
         setFileName(multipartRequest.getFileName(clientId));
         saveOpenAttachment();
      }
    }
现在我像Seam一样处理请求,不需要破坏其他类型请求的web:multipartfilter配置