/** 保存对象的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); }
/** * 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")); } }