]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/OneFormPage.java
fix: correct editable/non-editable DoB display in My Details
[gigi.git] / src / org / cacert / gigi / pages / OneFormPage.java
index 5eb4db8bfb122c0f12510c334d3749af90d46d96..c1e075cbac73ef6cbebee8e20f7c1fc5707aff0e 100644 (file)
@@ -7,9 +7,9 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.cacert.gigi.GigiApiException;
-import org.cacert.gigi.output.Form;
+import org.cacert.gigi.output.template.Form;
 
-public class OneFormPage extends Page {
+public abstract class OneFormPage extends Page {
 
     Class<? extends Form> c;
 
@@ -21,9 +21,13 @@ public class OneFormPage extends Page {
     @Override
     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         try {
-            Form.getForm(req, c).submit(resp.getWriter(), req);
+            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);
         }
     }
 
@@ -32,8 +36,10 @@ public class OneFormPage extends Page {
         try {
             c.getConstructor(HttpServletRequest.class).newInstance(req).output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
         } catch (ReflectiveOperationException e) {
-            new GigiApiException(e.getMessage()).format(resp.getWriter(), getLanguage(req));
+            new GigiApiException().format(resp.getWriter(), getLanguage(req));
         }
     }
 
+    public abstract String getSuccessPath(Form f);
+
 }