Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

187
Vistas
¿Cómo evitar que mi acción se ejecute cuando actualizo mi página?

Hola comunidad tengo el siguiente problema, estoy trabajando en un proyecto con tecnología JSP y Struts, soy realmente nuevo porque es una tecnología antigua pero es con lo que tenía que trabajar.

Tengo el problema de que se están haciendo llamadas a la acción cuando actualizo mi página, entiendo que esto es porque en mi URL está la última acción que envío a llamar, entonces está haciendo una llamada de regreso a esa acción, tengo más que un formulario dentro de mi JSP que tiene diferentes acciones, no sé si esto es correcto o tengo que cambiarlos a ajax o hay alguna forma de resolverlo.

Ya he añadido un método POST para las acciones pero aún no ha funcionado.

Mis acciones en el archivo de configuración:

 <action name="plantillasAction_*" method="{1}" class="com.xxx.action.ActionPlantillas"> <result name="success">/jsp/plantillas/ResultTemplates.jsp</result> <result name="templateUpload">/jsp/plantillas/CreateCoordinates.jsp</result> <result name="saveCoordinates">/jsp/plantillas/SaveCoordinates.jsp</result> <result name="updateCoordinates">/jsp/plantillas/UpdateCoordinatesTemplate.jsp</result> <interceptor-ref name="defaultSecurityStack"> <param name="tokenSession.excludeMethods">init,templateFileUpload,processNavigator, addCoordinateTemplate,deleteCoordinateToSave,saveTemplate, deleteTemplate,viewUpdateTemplate,addCoordinatesTemplateUpdate, searchTemplates,processUpdateNavigator</param> </interceptor-ref> <allowed-methods> templateFileUpload, processNavigator, addCoordinateTemplate, deleteCoordinateToSave, saveTemplate, deleteTemplate, viewUpdateTemplate, addCoordinatesTemplateUpdate, processUpdateNavigator, init, searchTemplates </allowed-methods> </action>

Mi CreateCoordinates.jsp :

 <%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="/WEB-INF/struts-tags.tld" prefix="s" %> <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> <%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags"%> <!DOCTYPE html> <html> <head> <meta name="decorator" content="contentLayout"/> </head> <body> <script src="${pageContext.request.contextPath}/html/js/jquery/alerts/jquery.alerts.js" type="text/javascript"></script> <link rel="stylesheet" href="${pageContext.request.contextPath}/html/js/jquery/alerts/jquery.alerts.css"> <script src="${pageContext.request.contextPath}/html/js/coordinatesTemplate.js" type="text/javascript"></script> <script src="${pageContext.request.contextPath}/html/js/templates.js" type="text/javascript"></script> <script language="javascript"> function update(value){ var url="myAction?someVariable=value"; window.open(url,"_blank","directories=no, status=no,width=1400, height=870,top=0,left=0"); } </script> <div id="content"> <div class="wrap"> <h1 style="margin-left:15px"> <s:text name="label.module.template.header.update"/> </h1> <s:form action="plantillasAction_processUpdateNavigator" method="post" > <s:token /> <hr style="border:15px;"> <hr style="border:2px;"> <div id="navigator" align="center"> <table align="center"> <tr> <s:if test="currentPosition==imagePDFs.size() "> <script type="text/javascript"> disableFirstButtons()</script> </s:if> <s:if test="currentPosition== 1 && imagePDFs.size() != 1"> <script type="text/javascript"> enableFirstButtons()</script> </s:if> <s:if test="currentPosition==1 && imagePDFs.size()==1 "> <script type="text/javascript"> enableAllButtons()</script> </s:if> <td> <button id="firstPage" name="buttonAction" type="submit" value="3" ><<</button> </td> <td> <button id="backPage" name="buttonAction" class="previous" type="submit" value="2" ><</button> </td> <td align="center"> <li>${currentPosition}/${imagePDFs.size()}</li> </td> <td align="right"> <button id="nextPage" name="buttonAction" class="next" type="submit" value="1">></button> </td> <td align="right"> <button id="endPage" name="buttonAction" type="submit" value="4">>></button> </td> </tr> </table> </div> <div class="wrapper"> <div id="content"> <div id="pdf-container" > <div id="signers-list"> </div> <img id="pdf-page" src="data:image/png;base64,${image}" /> </div> <!-- .\pdf-container --> </div> <!-- .\content --> </div> <!-- .\wrapper --> <div id="navigator" align="center"> <table align="center"> <tr> <td align="center"> <button id="firstPage2" name="buttonAction" type="submit" value="3"><<</button> </td> <td align="center"> <button id="backPage2" name="buttonAction" class="previous" type="submit" value="2"><</button> </td> <td align="center"> <li>${currentPosition}/${imagePDFs.size()}</li> </td> <td align="rigth"> <button id="nextPage2" name="buttonAction" class="next" type="submit" value="1">></button> </td> <td align="rigth"> <button id="endPage2" name="buttonAction" type="submit" value="4">>></button> </td> </tr> </table> </div> </s:form> <s:form action="routeAction_updateRoute" method="post" validate="false" namespace="/plantilla" theme="simple" onsubmit="return false;"> <s:token /> <table width="100%" cellspacing="0" cellpadding="0"> <tr height="10px"> </tr> <tr height="40px" valign="middle" class="tablecells"> <td width="25%" class="negritas"> <s:text name ="label.module.template.info.plantilla" /> </td> </tr> <tr height="40px" valign="middle" class="tablecells"> <td width="14%"> <s:text name="label.module.template.add.nombre.plantilla"/> </td> <td> <s:textfield id="idTemplateName" maxlength="80" size="40" value="%{currentTemplateView}" cssClass="inputbox"/> </td> </tr> <tr height="5px"> </tr> </table> </table> <!-- TABLA CON BOTONES PARA BUSCAR INTEGRANTES A LA NUEVA RUTA (GRID)--> <table width="100%" cellspacing="0" cellpadding="0"> <tr height="40px" valign="middle" align="center" class="tablecells"> <td colspan="2" class="leftElement"> <button id="agregarFirma" class="action green" style="float:none" name="buttonActionCoordiante" type="submit" value="2"> <span id="fisnish" class="label" onClick='createDragDropElement()'>Agregar</span> </button> <button class="action green" style="float:none" id="btnCancelar" onClick="regresar('${pageContext.request.contextPath}')"> <span id="iniciar" class="label"> <s:text name="boton.cancelar"/> </span> </button> </td> </tr> <tr height="15px"> </tr> </table> </s:form> </div> <script src="${pageContext.request.contextPath}/html/plugins/fontawesome/js/fontawesome-all.min.js" type="text/javascript"></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.943/pdf.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/interact.js/1.10.11/interact.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.943/pdf.worker.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.3/TweenMax.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.3/utils/Draggable.min.js'></script> <script src="${pageContext.request.contextPath}/html/js/mainPdfUpdate.js" type="text/javascript"></script> </body> </html>

Cuando ingreso mi JSP, esta es la URL:

ingrese la descripción de la imagen aquí

Cuando presiono cualquier botón de mi primer formulario, cambia la URL a

ingrese la descripción de la imagen aquí

Si actualizo mi página allí, el nombre de la acción es plantillasAction_processUpdateNavigator , lo que quiero en este caso es ejecutar la acción plantillasAction_viewUpdateTemplate .

Mi ActionPlantillas.java :

 public class ActionPlantillas extends ActionSupport implements ServletRequestAware { private static Logger logger = LogManager.getLogger(ActionPlantillas.class); private HttpServletRequest request; public String viewUpdateTemplate() { //OPERATIONS return "updateCoordinates"; } public String processUpdateNavigator() { //OPERATIONS return "updateCoordinates"; } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Cree una SuccessAction con la clase redirectAction.

 <action name="plantillasAction_*" method="{1}" class="com.xxx.action.ActionPlantillas"> <result name="success">/jsp/plantillas/ResultTemplates.jsp</result> </action> <action name="SuccessAction" class="SuccessPage"> <result name="success">/jsp/plantillas/success.jsp</result> <action name="manual_order" class="materialTypeMasterAction" method="enquiry_process"> <result type="redirectAction">SuccessAction</result> </action>

Así: Impedir el reenvío de acciones

Tenga en cuenta que si no cambia la URL, siempre volverá a enviar el formulario. Entonces, si implementa esta solución anterior, la URL cambiará en caso de éxito (redirectSuccess).

Realmente no tiene que crear una nueva página de éxito, puede redirigir a la URL/acción original en la que se carga el formulario (limpio).

Espero que esto ayude.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda