/** 保存对象的Action函数. */
  public ActionForward save(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response) {
    if (isCancelled(request)) return list(mapping, form, request, response);
    if (!isTokenValid(request)) {
      saveDirectlyError(request, "重复提交");
      return mapping.findForward(LIST);
    }
    resetToken(request);

    // run validation rules on this form
    ActionMessages errors = form.validate(mapping, request);
    if (!errors.isEmpty()) {
      saveErrors(request, errors);
      refrenceData(request);
      return mapping.findForward(EDIT);
    }

    T object;
    // 如果是修改操作,id is not blank
    if (StringUtils.isNotBlank(request.getParameter(idName))) {
      object = doGetEntity(form, request);
      if (object == null) {
        saveError(request, "entity.missing");
        return mapping.findForward(LIST);
      }
    } else { // 否则为新增操作
      object = doNewEntity(form, request);
    }
    try {
      // 将lazyform内容绑定到object
      initEntity(form, request, object);
      doSaveEntity(form, request, object);
      savedMessage(request, object);
    } catch (BusinessException e) {
      log.error(e.getMessage(), e);
      saveDirectlyError(request, e.getMessage());
      refrenceData(request);
      return mapping.findForward(EDIT);
    }
    return mapping.findForward(SUCCESS);
  }
Esempio n. 2
0
  /**
   * Guarda el documento electrónico.
   *
   * @param mapping {@link ActionMapping} con los mapeos asociado.
   * @param form {@link ActionForm} asociado al action.
   * @param request {@link HttpServletRequest}
   * @param response {@link HttpServletResponse}
   */
  protected void saveExecuteLogic(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {

    try {
      logger.info("Inicio de saveExecuteLogic");

      // Validar el formulario
      ActionErrors errores = form.validate(mapping, request);
      if ((errores == null) || errores.isEmpty()) {
        logger.info("Formulario validado");

        // Recoger la información del documento
        DocDocumentoExtVO documento = new DocDocumentoExtVO();
        ((DocumentoForm) form).populate(documento);
        if (logger.isDebugEnabled()) logger.debug("DocDocumentoVO:\n" + documento.toString());

        DocTCapturaVO tarea =
            (DocTCapturaVO) getFromTemporalSession(request, DocumentosConstants.TAREA_KEY);
        if (StringUtils.isBlank(documento.getId())) {
          if (tarea != null) {
            // Crear el documento
            ((DocumentoForm) form)
                .set(
                    getGestionDocumentosElectronicosBI(request)
                        .insertDocumentoDesdeTarea(documento));
          } else {
            // Crear el documento
            ((DocumentoForm) form)
                .set(
                    getGestionDocumentosElectronicosBI(request)
                        .insertDocumentoDesdeCuadro(documento));
          }

          // Eliminar la invocación anterior
          popLastInvocation(request);
        } else {
          if (tarea != null) {
            // Modificar el documento
            ((DocumentoForm) form)
                .set(
                    getGestionDocumentosElectronicosBI(request)
                        .updateDocumentoDesdeTarea(documento));
          } else {
            // Modificar el documento
            ((DocumentoForm) form)
                .set(
                    getGestionDocumentosElectronicosBI(request)
                        .updateDocumentoDesdeCuadro(documento));
          }
        }

        RelacionEntregaVO relacion =
            (RelacionEntregaVO)
                getFromTemporalSession(request, TransferenciasConstants.RELACION_KEY);
        if (relacion != null) {
          ServiceRepository services =
              ServiceRepository.getInstance(ServiceClient.create(getAppUser(request)));
          GestionRelacionesEntregaBI relacionBI = services.lookupGestionRelacionesBI();
          if (relacion.isRechazada()) {
            relacion.setEstado(EstadoREntrega.ABIERTA.getIdentificador());
            try {
              relacionBI.updateRelacion(relacion);
            } catch (ActionNotAllowedException e) {
              guardarError(request, e);
            }
          }
        }

        // Actualizar el árbol de documentos
        request.setAttribute(DocumentosConstants.REFRESH_VIEW_KEY, Boolean.TRUE);

        setReturnActionFordward(
            request,
            redirectForwardMethod(
                request,
                "/documento",
                "method",
                "retrieve"
                    + (documento.getId() != null ? "&id=" + documento.getId() : "")
                    + (documento.getIdObjeto() != null
                        ? "&idObjeto=" + documento.getIdObjeto()
                        : "")
                    + "&tipoObjeto="
                    + documento.getTipoObjeto()));
      } else {
        logger.info("Formulario inv\u00E1lido");

        // Añadir los errores al request
        obtenerErrores(request, true).add(errores);

        setReturnActionFordward(request, mapping.findForward("editar_documento"));
      }
    } catch (Exception e) {
      logger.error("Error al guardar el documento", e);
      obtenerErrores(request, true)
          .add(ActionErrors.GLOBAL_ERROR, new ActionError(Constants.ERROR_ALMACENAR_DOCUMENTO));

      setReturnActionFordward(request, mapping.findForward("editar_documento"));
    }
  }