2016-01-19 6 views
0

j'ai fait un plugin éditeur personnalisé, dans un Seam 2.2.2 projet, ce qui rend le fichier télécharger cette façon:url-modèle de filtre de couture Comprendre et les éventuels conflits

1) config l'éditeur pour charger ma page de téléchargement xhtml spécifique ; 2) appelez la méthode suivante à l'intérieur de cette page et renvoyez un rappel 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 

Pour que cela fonctionne, je dois mettre cela à l'intérieur components.xml:

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

L'attribut create-temp-fichiers ne semble pas avoir d'importance quelle que soit sa valeur. Mais url-pattern doit être "" ou " /myUploadPage.seam", toute autre valeur rend la liste d'éléments renvoyée vide. Quelqu'un sait-il pourquoi?

Cela se transforme en un problème car lorsque j'utilise un modèle d'URL qui fonctionne dans ce cas, chaque formulaire avec enctype = "multipart/form-data" dans mon application cesse de soumettre des données. Donc, je me retrouve avec d'autres parties du système se brisant. Quelqu'un pourrait m'aider?

Répondre

0

Pour résoudre mon problème, je l'ai changé la solution à être comme Seam multipart demandes de poignée de filtre:

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(); 
     } 
    } 

Maintenant, je gère la demande comme Seam faire, et ne pas besoin du web: config multipart-filtre était briser d'autres types de demande.