]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/OneFormPage.java
upd: enforce a more strict Form call pattern.
[gigi.git] / src / org / cacert / gigi / pages / OneFormPage.java
index c1e075cbac73ef6cbebee8e20f7c1fc5707aff0e..512dad49367aeb126453531ad791f57b350c38df 100644 (file)
@@ -9,7 +9,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.output.template.Form;
 
-public abstract class OneFormPage extends Page {
+public class OneFormPage extends Page {
 
     Class<? extends Form> c;
 
@@ -18,16 +18,16 @@ public abstract class OneFormPage extends Page {
         c = t;
     }
 
+    @Override
+    public boolean beforePost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+        return Form.getForm(req, c).submitExceptionProtected(req, resp);
+    }
+
     @Override
     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
-        try {
-            Form form = Form.getForm(req, c);
-            if (form.submit(resp.getWriter(), req)) {
-                resp.sendRedirect(getSuccessPath(form));
-            }
-        } catch (GigiApiException e) {
-            e.format(resp.getWriter(), getLanguage(req));
-            doGet(req, resp);
+        Form form = Form.getForm(req, c);
+        if (Form.printFormErrors(req, resp.getWriter())) {
+            form.output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
         }
     }
 
@@ -40,6 +40,4 @@ public abstract class OneFormPage extends Page {
         }
     }
 
-    public abstract String getSuccessPath(Form f);
-
 }