Intenté implementar token interceptor con la etiqueta <s:url ..
pero muestra el error en el primer clic. es decir, The form has already been processed or no token was supplied, please try again.
Quiero implementar este interceptor, porque si los usuarios ya eliminaron una fila y actualizaron la página una vez más, la misma acción no debería volver a realizarse.
<a href='https://stackoverflow.com/questions/18822095/unable-to-implement-struts-2-token-interceptor-with-hyperlink/' style="color: white;text-decoration: none;" class="delbuttonlink">Clear current Uploads
y mi struts.xml
:
uploadforward uploadforward
La etiqueta s: token simplemente coloca un elemento oculto que contiene el token único.
No es necesario usar token con url, porque el formulario debe enviarse. Si quiere pasar un token como parámetro, entonces necesita usar s:param
etiqueta s:param
.
Definir el parámetro
private String token; public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String execute() throws Exception { Map context = ActionContext.getContext().getValueStack().getContext(); Object myToken = context.get("token"); if (myToken == null) { myToken = TokenHelper.setToken("token"); context.put("token", myToken); } token = myToken.toString(); return SUCCESS; }
en el JSP
La forma más simple de usar token con url es usar la etiqueta
para establecer el valor token en sesión y recuperarlo en
etiqueta
.