Послать параметры запроса на UploadAction в gwt-upload - PullRequest
2 голосов
/ 01 марта 2012

Я получаю gwt-upload , работающий в приложении GAE. Как предложил , я реализовал Custom UploadAction для обработки хранения файла в хранилище данных. Код выглядит так:

public String executeAction(HttpServletRequest request,
        List<FileItem> sessionFiles) throws UploadActionException {
    logger.info("Starting: DatastoreUploadAction.executeAction");
    String executeAction = super.executeAction(request, sessionFiles);

    for (FileItem uploadedFile : sessionFiles) {            
        Long entityId = new Long(2001); // This is where i wanna use a request parameter
        InputStream imgStream;
        try {
            imgStream = uploadedFile.getInputStream();
            Blob attachment = new Blob(IOUtils.toByteArray(imgStream));
            String contentType = uploadedFile.getContentType();
            appointmentDao.setAppointmentAttachment(entityId, attachment,
                    contentType);
        } catch (IOException e) {
            logger.error("Unable to store file", e);
            throw new UploadActionException(e);
        }

    }

    return executeAction;
}

Как видите, класс DAO требует, чтобы "EntityID" сохранял загруженный файл в хранилище данных. Теперь я работаю с жестко запрограммированным значением, и все идет хорошо, но я бы хотел, чтобы entityID отправлялся клиентом в качестве параметра запроса. Виджет, который выполняет загрузку, является MultiUploader:

private MultiUploader defaultUploader;

Возможно ли для MultiUploader или любого другого виджета установить параметр запроса, чтобы я мог использовать его в моем UploadAction?

1 Ответ

4 голосов
/ 01 марта 2012

Да, вы можете установить его в коде на стороне клиента.
Существует метод: MultiUploader #setServletPath(java.lang.String), например:

  final MultiUploader u = new MultiUploader();
  ...
  ...
  ...
  u.setServletPath(u.getServletPath() + "?entityId="+myObject.getEntityId());

на стороне сервера:

  String entityId= request.getParameter("entityId"); 

Прочтите это для получения дополнительной информации: Отправка дополнительных параметров сервлету

...