7.9. Preventing Double Form Submissions
Problem
You need to stop users from inadvertently submitting a form twice.
Solution
Use the
Struts token facility to
reject a duplicate request. First, as shown in Example 7-6, save a token in the HTTP request in the
Action
which precedes the JSP containing the form.
Example 7-6. Action that saves token
package com.oreilly.strutsckbk.ch06; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class SaveTokenAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // save a token saveToken(request); // load the data to view BusinessService.loadData( ); return mapping.findForward("success"); } }
You don't have to make any changes to the JSP that
displays the form as long as you create the form using the
html:form
tag (as shown in Example 7-7).
Example 7-7. JSP page for token handling
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <html> <head> <title>Struts Cookbook - Chapter 7 : Token Test</title> </head> <body bgcolor="white"> <h2>Token Test</h2> <html:errors/> <html:form action="/SaveData"> <html:text property="name"/> <html:submit/> ...
Get Jakarta Struts Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.