2015-12-08 7 views
0

У меня есть приложение для шва 2.2.2, и я пытаюсь настроить плагин ckeditor fileUpload на него.Пользовательский ckeditor fileUpload в java с apache fileUpload parseRequest возвращает пустой список

Решение, которое я придумал это:

1) инициализировать редактор для всех элементов 'редактора' класса стиля:

var elements = CKEDITOR.document.find('.editor'); 
for(var i = 0; i< elements["$"].length; i++){ 
     CKEDITOR.replace(elements["$"][i], { 
      filebrowserUploadUrl: rootPath + "/cops/filebrowserUploadUrl.seam" 
     }); 
    } 

2) Установить filebrowserUploadUrl.seam, ничего не делать, но выполнить:

#{attachmentController.sendImageToServer()} 

3) осуществлять фоновый с Apache Commons FileUpload:

public void sendImageToServer() 
{  
    HttpServletRequest request = ServletContexts.instance().getRequest(); 
    DiskFileItemFactory factory = new DiskFileItemFactory(); 

    File repository = (File) request.getAttribute("javax.servlet.context.tempdir"); 
    factory.setRepository(repository); 
    ServletFileUpload upload = new ServletFileUpload(factory); 

    try 
    { 
     List<FileItem> items = upload.parseRequest(request); 
     processItems(items); //set the file data to specific att 
     saveOpenAttachment(); //save the file to disk 
    } 

Этот метод называется правильным. Я могу debbug параметр upload (с некоторыми двоичными данными) внутри запроса, но upload.parseRequest (запрос) возвращает пустой список. Я искал эту проблему, и я сделал все, что мог, но я не могу сказать, вызывает ли приложение пользовательский FaceletViewHandler. Хотя, если бы я смог найти решение этой проблемы, я был бы очень доволен, я чувствую, что это не очень хорошее решение. Возможно, интеграция Seam с личиками может дать мне лучшее решение. Я действительно не знаю. Любое предложение?

+0

я получаю предложение работать, делая список элементов = новый ServletFileUpload (новый DiskFileItemFactory()) parseRequest (запрос) в компоненте и настройка <веб:. Многочастному-фильтр создание-ТЕМП-файлы = «истинные» максимизатор request-size = "1024000" url-pattern = "*" /> в моих components.xml. Но все же сомнение: любой другой url-шаблон разбивает его. Кто-нибудь знает, почему? –

ответ

0

Окончательное решение было как пластах многочастных запросов фильтра ручки:

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 делает, и не нуждаются в Интернете: многочастному-фильтра конфигурации, который ломится другие типы запроса.

 Смежные вопросы

  • Нет связанных вопросов^_^