X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Foutput%2Ftemplate%2FForm.java;h=1eb0efa04e5f8ca4a87fc906bf2906f3eb7d3a4d;hb=98dc0c64072a6f7f7916471f378cabf2d6c4fb87;hp=3f7ab6d1d06750fdeb7789e7a77149df39ec43c6;hpb=40ac8e40f03b0ae8db51ba89ea476de114bdde41;p=gigi.git diff --git a/src/org/cacert/gigi/output/template/Form.java b/src/org/cacert/gigi/output/template/Form.java index 3f7ab6d1..1eb0efa0 100644 --- a/src/org/cacert/gigi/output/template/Form.java +++ b/src/org/cacert/gigi/output/template/Form.java @@ -2,6 +2,7 @@ package org.cacert.gigi.output.template; import java.io.IOException; import java.io.PrintWriter; +import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -9,6 +10,7 @@ import javax.servlet.http.HttpSession; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.util.RandomToken; /** @@ -60,6 +62,32 @@ public abstract class Form implements Outputable { */ public abstract boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException; + /** + * Calls {@link #submit(PrintWriter, HttpServletRequest)} while catching and + * displaying errors ({@link GigiApiException}), and re-outputing the form + * via {@link #output(PrintWriter, Language, Map)}. + * + * @param out + * the target to write the form and errors to + * @param req + * the request that this submit originated (for submit and for + * language) + * @return as {@link #submit(PrintWriter, HttpServletRequest)}: true, iff + * the form succeeded and the user should be redirected. + */ + public boolean submitProtected(PrintWriter out, HttpServletRequest req) { + try { + boolean succeeded = submit(out, req); + if (succeeded) { + return true; + } + } catch (GigiApiException e) { + e.format(out, LoginPage.getLanguage(req)); + } + output(out, LoginPage.getLanguage(req), new HashMap()); + return false; + } + protected String getCsrfFieldName() { return CSRF_FIELD; }