2015-08-16 4 views
1

Если я хочу загрузить файл с определенным виджетами/аддонами Vaadin, им нужно получить некоторые предупреждения и файлы не будут загружены.Загрузка файла сбой с помощью Vaadin Spring PLupload-Addon

Я понятия не имею, почему это предупреждение происходит. Я проверял весь аддон и видел некоторое использование JavaScript, которое использует этот POST, но я не понимаю, почему он бросает некоторые предупреждения и не работает вообще.

Я проверил интеграцию Addon без весны, и все сработало хорошо.

Это то предупреждения:

2015-08-16_15:44:53.777 WARN o.s.web.servlet.PageNotFound - Request method 'POST' not supported 
2015-08-16_15:44:53.777 WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver - Handler execution resulted in exception: Request method 'POST' not supported 
2015-08-16_15:44:54.937 WARN o.s.web.servlet.PageNotFound - Request method 'POST' not supported 
2015-08-16_15:44:54.938 WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver - Handler execution resulted in exception: Request method 'POST' not supported 
2015-08-16_15:44:55.977 WARN o.s.web.servlet.PageNotFound - Request method 'POST' not supported 
2015-08-16_15:44:55.977 WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver - Handler execution resulted in exception: Request method 'POST' not supported 
2015-08-16_15:44:57.019 WARN o.s.web.servlet.PageNotFound - Request method 'POST' not supported 
2015-08-16_15:44:57.020 WARN o.s.w.s.m.s.DefaultHandlerExceptionResolver - Handler execution resulted in exception: Request method 'POST' not supported 

Мой код выглядит следующим образом, простая инициализация() с минимумом функциональности,:

protected void init (VaadinRequest request){ 
    HorizontalLayout root = new HorizontalLayout(); 
    root.setSizeFull(); 
    setContent(root); 
    setSizeFull(); 

    PluploadManager manager = new PluploadManager(); 
    manager.getUploader().setMaxFileSize("10mb"); 
    manager.getUploader().addFileUploadedListener(new Plupload.FileUploadedListener() { 
     public void onFileUploaded(PluploadFile file) { 
      Notification.show("I've just uploaded file: " + file.getName()); 
     } 
    }); 

    manager.getUploader().addErrorListener(new Plupload.ErrorListener() { 
     public void onError(PluploadError error) { 
      Notification.show("There was an error: " + error.getMessage() + " (" + error.getType() + ")", 
        Notification.Type.ERROR_MESSAGE); 
     } 
    }); 

    root.addComponent(manager); 
} 

Вот мои зависимости внутри П:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-rest</artifactId> 
</dependency> 
<dependency> 
    <groupId>com.vaadin</groupId> 
    <artifactId>vaadin-spring-boot-starter</artifactId> 
    <version>1.0.0.beta3</version> 
</dependency> 
<dependency> 
    <groupId>pl.exsio</groupId> 
    <artifactId>plupload-vaadin</artifactId> 
    <version>2.0.0</version> 
</dependency> 

Актуальная информация Техники:

+0

Куда он бросает ошибки/предупреждения? Столбец также будет большим. –

+0

На первом «котбоке» есть мой вывод предупреждений на консоль, я не получаю больше информации, включая журналы . Дополнительно я мог бы загрузить демонстрационный проект, но в целом запустил его пустой проект генератора Spring Spring Projekt с скомпилированным виджетами/addon of Vaadin – thunder

+0

Удалось ли вам это исправить? – adam0404

ответ

1

Это не поддерживается из коробки.

Причина в том, что URL-адрес /pluploader-upload-action не обрабатывается сервлетом Ваадина. Настоящий URL сервлета Ваадина - /vaadinServlet. Vaadin регистрирует SimpleUrlHandlerMapping с ServletForwardingController на корневом URL (по умолчанию) и/VAADIN. Для других URL-адресов необходимо зарегистрировать их самостоятельно.

Попробуйте обходным путем.

В application.properties:

multipart.enabled=false 

Добавить следующую конфигурацию.

@Configuration 
public class VaadinPluploadConfiguration { 
    private static final String PLUPLOADER_URL = "/pluploader-upload-action"; 
    @Inject 
    private Controller vaadinUiForwardingController; 

    @Bean 
    public SimpleUrlHandlerMapping vaadinForwardingHandlerMapping() { 
    SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping(); 
    mapping.setOrder(Integer.MIN_VALUE + 1); 
    Map<String, Object> urlMappings = new HashMap<String, Object>(); 
    urlMappings.put(PLUPLOADER_URL, vaadinUiForwardingController); 
    mapping.setUrlMap(urlMappings); 
    return mapping; 
    } 
} 

Мультисекционного отключена, чтобы позволить Plupload надстройки обрабатывать многосекционный раздел, в противном случае будет обработана весной и разорвет надстройку.

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