Efectúe una doble pulsación en handlng en el lado del cliente utilizando Struts 2
Puede sacar el máximo provecho de las características de Struts 2 para realizar el manejo de la doble pulsación para los formularios basados en web.
Por qué y cuándo se efectúa esta tarea
Un problema persistente con los formularios basados en los tipos de base ha sido un comportamiento en el que, cuando el usuario envía un formulario, una segunda pulsación accidental del ratón enviará de nuevo el formulario. Puede inhabilitar este comportamiento utilizando los pasos siguientes. También puede sacar provecho de la característica de subida de archivos de Struts 2.
Hay tres formas de manejar escenarios de doble pulsación en HCL Commerce:
- Manejo del lado del cliente utilizando JavaScript. Consulte Manejo de la doble pulsación en el cliente utilizando JavaScript.
- Manejo del lado del servidor MultiClickRequestHandler. Consulte Configuración del manejo de la doble pulsación.
- Tanto el cliente como el lado del servidor utilizando Struts 2.
<interceptor name="token"
class="org.apache.struts2.interceptor.TokenInterceptor"/>
<interceptor name="tokenSession"
class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/>
Procedimiento
-
Añada la configuración del interceptor a la acción que necesita para gestionar situaciones de doble pulsación.
<action class="com.ibm.commerce.struts.v2.BaseAction" name="Logon"> <param name="authenticate">0:0</param> <param name="csrfProtected">0:0</param> <param name="https">0:1</param> <param name="parameter">com.ibm.commerce.security.commands.LogonCmd</param> <interceptor-ref name="token"/> <!-- <interceptor-ref name="tokenSession"></interceptor-ref> --> <result name="invalid.token">/duplicateRequest2.jsp</result> </action>
Nota:- Puede utilizar el interceptor de símbolos o tokenSession en la acción.
- Si el interceptor de señales identifica la solicitud como duplicada, devuelve un resultado de
invalid.token
devoluciones. Debe tener este interceptor para añadirlo aquí si desea devolver su propio resultado. Si no se añade la señal, se utilizará un resultado global parainvalid.token(/duplicateRequest.jsp)
.
-
Añada el
<s:token/>
en el formulario, que apunte a la acción que tiene el interceptor de señales configurado. -
Añada
<%@taglib uri="struts-tags.tld" prefix="s" %>
la página que contiene ese formulario. Ahora, cuando se invoca la acción configurada, la protección de doble pulsación está habilitada y la solicitud no se enviará más de una vez.