struts 1.xフォームの重複提出を防止します.
2013 ワード
actionの流れを行って、再提出を防ぐページに行きます.
public class PrepareTokenAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// Generate a unique token that will be
// check when the form is submitted
saveToken(request);
// Forward to the form
return mapping.findForward("success");
}
}
提出ページのactionを処理します.
public class ProcessTokenAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// If user pressed 'Cancel' button,
// return to home page
if (isCancelled(request)) {
return mapping.findForward("home");
}
ActionErrors errors = new ActionErrors();
// Prevent unintentional duplication submissions by checking
// that we have not received this token previously
if (!isTokenValid(request)) {
errors.add(
ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("errors.token"));
}
resetToken(request);
// Report any errors we have discovered back to the original form
if (!errors.isEmpty()) {
saveErrors(request, errors);
saveToken(request);
return (mapping.getInputForward());
}
// Forward to result page
return mapping.findForward("success");
}
}