public String addQuestionThroughForm() throws IOException {
   if (idTaskAddQuestion < 1) {
     addFieldError("warning", "Select task and then add questions");
     return INPUT;
   }
   SessionFactory sessionFactory = (SessionFactory) servletContext.getAttribute("SessionFactory");
   try {
     task = new TaskDaoImpl(sessionFactory).getTask(idTaskAddQuestion);
   } catch (Exception e) {
     e.printStackTrace();
     return INPUT;
   }
   if (hasFieldErrors()) {
     return ERROR;
   }
   if (fileImage != null) {
     Path imagePath = Paths.get(fileImage.getAbsolutePath());
     InputStream io = Files.newInputStream(imagePath);
     question.setImage(IOUtils.toByteArray(io));
   }
   question.setTask(task);
   ValidatorFactory validatorFactory =
       (ValidatorFactory) servletContext.getAttribute("ValidatorFactory");
   Validator validator = validatorFactory.getValidator();
   Set<ConstraintViolation<Question>> constraintViolations = validator.validate(question);
   if (!constraintViolations.isEmpty()) {
     for (ConstraintViolation item : constraintViolations) {
       addFieldError("warning", "Question validate error. " + item.getMessage());
     }
     return ERROR;
   }
   if (!parseVariants(question)) {
     return ERROR;
   }
   try {
     task = new TaskDaoImpl(sessionFactory).addQuestion(idTaskAddQuestion, question);
     addFieldError("success", "Question was added!");
     question = null;
     return SUCCESS;
   } catch (Exception e) {
     addFieldError("warning", e.getMessage());
     return ERROR;
   }
 }