From 429739837ba46a5736ce5a4fe7d19f396bbc236c Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 20 Oct 2012 20:52:45 +0000
Subject: [PATCH]  * Console:   - Consolidate all the jsp formhandler
 boilerplate in the new     formhandler.jsi, in preparation for further
 improvements

---
 apps/routerconsole/jsp/config.jsp         |  7 ++---
 apps/routerconsole/jsp/configadvanced.jsp |  7 ++---
 apps/routerconsole/jsp/configclients.jsp  | 10 +------
 apps/routerconsole/jsp/confighome.jsp     |  9 +------
 apps/routerconsole/jsp/configkeyring.jsp  |  7 ++---
 apps/routerconsole/jsp/configlogging.jsp  |  7 ++---
 apps/routerconsole/jsp/confignet.jsp      |  7 ++---
 apps/routerconsole/jsp/configpeer.jsp     | 10 ++-----
 apps/routerconsole/jsp/configreseed.jsp   |  9 ++-----
 apps/routerconsole/jsp/configservice.jsp  |  7 ++---
 apps/routerconsole/jsp/configsidebar.jsp  |  9 +------
 apps/routerconsole/jsp/configstats.jsp    |  8 ++----
 apps/routerconsole/jsp/configtunnels.jsp  | 10 ++-----
 apps/routerconsole/jsp/configui.jsp       |  7 +----
 apps/routerconsole/jsp/configupdate.jsp   |  7 ++---
 apps/routerconsole/jsp/formhandler.jsi    | 33 +++++++++++++++++++++++
 16 files changed, 59 insertions(+), 95 deletions(-)
 create mode 100644 apps/routerconsole/jsp/formhandler.jsi

diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp
index 0d56b5f59d..538fb8a5f2 100644
--- a/apps/routerconsole/jsp/config.jsp
+++ b/apps/routerconsole/jsp/config.jsp
@@ -19,13 +19,10 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
 <div class="configure">
  <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>">
  <input type="hidden" name="action" value="blah" >
  <input type="hidden" name="ratesOnly" value="1" >
  <h3><%=intl._("Bandwidth limiter")%></h3><p>
diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp
index 53a8b227f5..d8a19e3505 100644
--- a/apps/routerconsole/jsp/configadvanced.jsp
+++ b/apps/routerconsole/jsp/configadvanced.jsp
@@ -21,14 +21,11 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigAdvancedHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
  <div class="configure">
  <div class="wideload">
  <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
  <h3><%=intl._("Advanced I2P Configuration")%></h3>
  <textarea rows="32" cols="60" name="config" wrap="off" spellcheck="false"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr>
diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp
index 13a4d6f1ba..3d0cf7cda6 100644
--- a/apps/routerconsole/jsp/configclients.jsp
+++ b/apps/routerconsole/jsp/configclients.jsp
@@ -25,16 +25,8 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter(\"action\")%>" />
- <jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter(\"nonce\")%>" />
- <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
  <div class="configure">
-<%
-    String pageNonce = formhandler.getNewNonce();
-%>
  <h3><%=intl._("Client Configuration")%></h3><p>
  <%=intl._("The Java clients listed below are started by the router and run in the same JVM.")%>
  </p><div class="wideload">
diff --git a/apps/routerconsole/jsp/confighome.jsp b/apps/routerconsole/jsp/confighome.jsp
index b8296fcbbb..6be2d9d2e9 100644
--- a/apps/routerconsole/jsp/confighome.jsp
+++ b/apps/routerconsole/jsp/confighome.jsp
@@ -22,14 +22,7 @@ input.default {
 <%@include file="confignav.jsi" %>
 
 <jsp:useBean class="net.i2p.router.web.ConfigHomeHandler" id="formhandler" scope="request" />
-<% formhandler.storeMethod(request.getMethod()); %>
-<jsp:setProperty name="formhandler" property="*" />
-<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
-<jsp:getProperty name="formhandler" property="allMessages" />
-<%
-    String pageNonce = formhandler.getNewNonce();
-%>
+<%@include file="formhandler.jsi" %>
 <jsp:useBean class="net.i2p.router.web.HomeHelper" id="homehelper" scope="request" />
 <jsp:setProperty name="homehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp
index e8b4089371..b2f5ef657c 100644
--- a/apps/routerconsole/jsp/configkeyring.jsp
+++ b/apps/routerconsole/jsp/configkeyring.jsp
@@ -15,10 +15,7 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigKeyringHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
  <jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" />
  <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 <div class="configure"><h2><%=intl._("Keyring")%></h2><p>
@@ -29,7 +26,7 @@
 </div>
 
  <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <h3><%=intl._("Manual Keyring Addition")%></h3><p>
  <%=intl._("Enter keys for encrypted remote destinations here.")%>
  <%=intl._("Keys for local destinations must be entered on the")%> <a href="i2ptunnel/"><%=intl._("I2PTunnel page")%></a>.
diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp
index c6f3ed945a..837ed81b8a 100644
--- a/apps/routerconsole/jsp/configlogging.jsp
+++ b/apps/routerconsole/jsp/configlogging.jsp
@@ -18,13 +18,10 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigLoggingHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
 <div class="configure">
  <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
  <h3><%=intl._("Configure I2P Logging Options")%></h3>
  <div class="wideload">
diff --git a/apps/routerconsole/jsp/confignet.jsp b/apps/routerconsole/jsp/confignet.jsp
index 7fb74500d9..72de18c4f6 100644
--- a/apps/routerconsole/jsp/confignet.jsp
+++ b/apps/routerconsole/jsp/confignet.jsp
@@ -18,13 +18,10 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigNetHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
 <div class="configure">
  <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
  <h3><%=intl._("IP and Transport Configuration")%></h3><p>
  <img src="/themes/console/images/itoopie_xsm.png" alt="">
diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp
index 9952db5534..b3aed01e6a 100644
--- a/apps/routerconsole/jsp/configpeer.jsp
+++ b/apps/routerconsole/jsp/configpeer.jsp
@@ -15,13 +15,7 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigPeerHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
-
-
-
+<%@include file="formhandler.jsi" %>
  <jsp:useBean class="net.i2p.router.web.ConfigPeerHelper" id="peerhelper" scope="request" />
  <jsp:setProperty name="peerhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
@@ -31,7 +25,7 @@
  %>
  <div class="configure">
  <form action="configpeer" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <a name="sh"> </a>
  <a name="unsh"> </a>
  <a name="bonus"> </a>
diff --git a/apps/routerconsole/jsp/configreseed.jsp b/apps/routerconsole/jsp/configreseed.jsp
index 39df228c69..c83ed389dd 100644
--- a/apps/routerconsole/jsp/configreseed.jsp
+++ b/apps/routerconsole/jsp/configreseed.jsp
@@ -18,14 +18,9 @@
 <%@include file="confignav.jsi" %>
 
 <jsp:useBean class="net.i2p.router.web.ConfigReseedHandler" id="formhandler" scope="request" />
-<% formhandler.storeMethod(request.getMethod()); %>
-<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter(\"action\")%>" />
-<jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter(\"nonce\")%>" />
-<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
-<jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
 <div class="configure"><form action="" method="POST">
-<input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+<input type="hidden" name="nonce" value="<%=pageNonce%>" >
 <h3><%=intl._("Reseeding Configuration")%></h3>
 <p><%=intl._("Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining.")%>
 <%=intl._("If reseeding has failed, you should first check your network connection.")%>
diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp
index 303fa4d31c..c6711cc43c 100644
--- a/apps/routerconsole/jsp/configservice.jsp
+++ b/apps/routerconsole/jsp/configservice.jsp
@@ -15,13 +15,10 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigServiceHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
  <div class="configure">
  <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <h3><%=intl._("Shutdown the router")%></h3>
  <p><%=intl._("Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes.")%> 
     <%=intl._("If you need to kill the router immediately, that option is available as well.")%></p>
diff --git a/apps/routerconsole/jsp/configsidebar.jsp b/apps/routerconsole/jsp/configsidebar.jsp
index 074fcfda30..129feaa107 100644
--- a/apps/routerconsole/jsp/configsidebar.jsp
+++ b/apps/routerconsole/jsp/configsidebar.jsp
@@ -22,17 +22,10 @@ input.default {
 <%@include file="confignav.jsi" %>
 
 <jsp:useBean class="net.i2p.router.web.ConfigSummaryHandler" id="formhandler" scope="request" />
-<% formhandler.storeMethod(request.getMethod()); %>
-<jsp:setProperty name="formhandler" property="*" />
-<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
+<%@include file="formhandler.jsi" %>
 <%
     formhandler.setMovingAction();
 %>
-<jsp:getProperty name="formhandler" property="allMessages" />
-<%
-    String pageNonce = formhandler.getNewNonce();
-%>
 <jsp:useBean class="net.i2p.router.web.SummaryHelper" id="summaryhelper" scope="request" />
 <jsp:setProperty name="summaryhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp
index 8a70c84bc4..d6bd67c1e5 100644
--- a/apps/routerconsole/jsp/configstats.jsp
+++ b/apps/routerconsole/jsp/configstats.jsp
@@ -66,17 +66,13 @@ function toggleAll(category)
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigStatsHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
-
+<%@include file="formhandler.jsi" %>
  <jsp:useBean class="net.i2p.router.web.ConfigStatsHelper" id="statshelper" scope="request" />
  <jsp:setProperty name="statshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
  <div class="configure">
  <form id="statsForm" name="statsForm" action="" method="POST">
  <input type="hidden" name="action" value="foo" >
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <h3><%=intl._("Configure I2P Stat Collection")%></h3>
  <p><%=intl._("Enable full stats?")%>
  <input type="checkbox" class="optbox" name="isFull" value="true" <%
diff --git a/apps/routerconsole/jsp/configtunnels.jsp b/apps/routerconsole/jsp/configtunnels.jsp
index e2eab6658f..de82f0027d 100644
--- a/apps/routerconsole/jsp/configtunnels.jsp
+++ b/apps/routerconsole/jsp/configtunnels.jsp
@@ -17,13 +17,7 @@
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
  <jsp:useBean class="net.i2p.router.web.ConfigTunnelsHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:setProperty name="formhandler" property="shouldsave" value="<%=request.getParameter(\"shouldsave\")%>" />
- <jsp:setProperty name="formhandler" property="action" value="<%=request.getParameter(\"action\")%>" />
- <jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter(\"nonce\")%>" />
- <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
  <div class="configure"><p>
  <%=intl._("NOTE")%>: 
  <%=intl._("The default settings work for most people.")%> 
@@ -33,7 +27,7 @@
  <%=intl._("Change these settings with care, and adjust them if you have problems.")%>
 <div class="wideload">
 <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
  <jsp:getProperty name="tunnelshelper" property="form" />
  <%=intl._("Note")%>: <%=intl._("Exploratory tunnel setting changes are stored in the router.config file.")%>
diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp
index 3177142da9..f1555a8920 100644
--- a/apps/routerconsole/jsp/configui.jsp
+++ b/apps/routerconsole/jsp/configui.jsp
@@ -28,11 +28,7 @@ input.default {
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigUIHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
 <div class="configure"><div class="topshimten"><h3><%=uihelper._("Router Console Theme")%></h3></div>
  <form action="" method="POST">
 <%
@@ -42,7 +38,6 @@ input.default {
         consoleNonce = Long.toString(new java.util.Random().nextLong());
         System.setProperty("router.consoleNonce", consoleNonce);
     }
-    String pageNonce = formhandler.getNewNonce();
 %>
  <input type="hidden" name="consoleNonce" value="<%=consoleNonce%>" >
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp
index a792bb07b3..2d2e54d257 100644
--- a/apps/routerconsole/jsp/configupdate.jsp
+++ b/apps/routerconsole/jsp/configupdate.jsp
@@ -16,17 +16,14 @@
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigUpdateHandler" id="formhandler" scope="request" />
- <% formhandler.storeMethod(request.getMethod()); %>
- <jsp:setProperty name="formhandler" property="*" />
- <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
- <jsp:getProperty name="formhandler" property="allMessages" />
+<%@include file="formhandler.jsi" %>
  <jsp:useBean class="net.i2p.router.web.ConfigUpdateHelper" id="updatehelper" scope="request" />
  <jsp:setProperty name="updatehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 <div class="messages">
  <jsp:getProperty name="updatehelper" property="newsStatus" /></div>
 <div class="configure">
  <form action="" method="POST">
- <input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
+ <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <% /* set hidden default */ %>
  <input type="submit" name="action" value="" style="display:none" >
     <% if (updatehelper.canInstall()) { %>
diff --git a/apps/routerconsole/jsp/formhandler.jsi b/apps/routerconsole/jsp/formhandler.jsi
new file mode 100644
index 0000000000..a773dda8d5
--- /dev/null
+++ b/apps/routerconsole/jsp/formhandler.jsi
@@ -0,0 +1,33 @@
+<%
+    /*
+     *  Does the standard setup for all form handlers, then
+     *  displays the message box (which drives the form processing).
+     *
+     *  Included ~15 times, keep whitespace to a minimum
+     *
+     *  Include this directly after the line:
+     *  <jsp:useBean class="net.i2p.router.web.xxxHandler" id="formhandler" scope="request" />
+     */
+
+    // This initializes the RouterContext - must be the first thing
+    formhandler.setContextId((String)session.getAttribute("i2p.contextId"));
+
+    // Prevents any saves via GET
+    formhandler.storeMethod(request.getMethod());
+
+    // Put all the params in the map, some handlers use this instead of individual setters
+    // We also call all of the setters below.
+    formhandler.setSettings(request.getParameterMap());
+
+%>
+<jsp:setProperty name="formhandler" property="*" />
+<jsp:getProperty name="formhandler" property="allMessages" />
+<%
+
+    // Only call this once per page, do not getProperty("newNonce") elsewhere,
+    // use the variable instead.
+    // This shuffles down the nonces, so it must be after getAllMessages() above,
+    // since it does the form validation.
+    String pageNonce = formhandler.getNewNonce();
+
+%>
-- 
GitLab