mardi 10 décembre 2019

JAVA If-Statement isnt working like the (SAME) others

this is my Servlet:

String alter = request.getParameter("alter");
    String email = request.getParameter("email");
    String telefon = request.getParameter("telefon");
    String passwordNeu = request.getParameter("passwordNeu");
    String passwordWdh = request.getParameter("passwordWdh");
    String agb = request.getParameter("checkbox1");
    String datenschutzbestimmungen = request.getParameter("checkbox2");

    FehlerManager manager = new FehlerManager();


    boolean alterKorrekt = manager.alterKorrekt(alter);
    boolean mailKorrekt = manager.mailKorrekt(email);
    boolean telefonKorrekt = manager.telefonKorrekt(telefon);

    Benutzer benutzer = (Benutzer) session.getAttribute("benutzer");


    if(agb != null && datenschutzbestimmungen != null && alterKorrekt && mailKorrekt &&
            telefonKorrekt && passwordNeu.equals(passwordWdh)) {
        message += "Alle Eingaben korrekt - Benutzer angelegt.";
        benutzer.setAlter(alter);
        benutzer.setEmail(email);
        benutzer.setTelefon(telefon);
        benutzer.setPasswort(passwordNeu);
        session.setAttribute("benutzer", benutzer);
        session.setAttribute("message", message);
        request.getRequestDispatcher("index.jsp").forward(request, response);

    } else if (agb == null|| datenschutzbestimmungen == null) {
        message1 += "Checkboxen sind nicht checked.";
        session.setAttribute("message1", message1);

        request.getRequestDispatcher("profil.jsp").forward(request, response);


    } else if (!alterKorrekt) {
        message2 += "Das Alter ist eine Zahl im Intervall [0, 123]";
        session.setAttribute("message2", message2);

        request.getRequestDispatcher("profil.jsp").forward(request, response);


    } else if (mailKorrekt == false) {
        message3 += "Email nicht korrekt: Mindestens 5, Maximal 20 Groß- oder Kleinbuchstaben, optional mit Sonderzeichen " +
                ".- +“ (Punkt, Minus, Unterstrich, Plus) " +
                "“@” gefolgt von beliebig vielen Klein- oder Großbuchstaben oder Zahlen " +
                "“.” gefolgt von minimal zwei, maximal drei Kleinbuchstaben";
        session.setAttribute("message3", message3);

        request.getRequestDispatcher("profil.jsp").forward(request, response);


    } else if (!telefonKorrekt) {
        message4 += "Eine Telefonnummer beginnt entweder mit + und zwei Zahlen oder mit einer 0\r\n" +
                "nach der 5. Stelle kann optional ein / oder ein - stehen\r\n" +
                "gefolgt von bis zu 10 weiteren Zahlen";
        session.setAttribute("message4", message4);

        request.getRequestDispatcher("profil.jsp").forward(request, response);


    } else if (!passwordNeu.equals(passwordWdh)) {
        message5 += "Passwörter stimmen nicht überein.";
        session.setAttribute("message5", message5);

        request.getRequestDispatcher("profil.jsp").forward(request, response);

    }

This is my FehlerManagerclass to check, if the mail, phonenumber, age (alter) is correctly put in in the formular:

public class FehlerManager {

public boolean alterKorrekt (String alter) {
    boolean istKorrekt = false;

    if (alter != null && alter.matches("[0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-3]") ) {
        istKorrekt = true;
    }


    return istKorrekt;

}

public boolean mailKorrekt (String mail) {
    boolean istKorrekt = false;

    if (mail != null && mail.matches("[a-zA-Z._+-]{5,20}@[1-9a-zA-Z]+\\.[a-z]{2,3}")) {
        istKorrekt = true;
    }

    return istKorrekt;


}

public boolean telefonKorrekt (String telefon) {
    boolean istKorrekt = false;

    if (telefon != null && telefon.matches("\\+[0-9]{2}[0-9]([0-9]{0,9})?|[0-9]{5}[-/]?([0-9]{0,9})?")) {
        istKorrekt = true;
    }

    return istKorrekt;
}

}

And my Formular:

        <form action="ProfilServlet" method="post">
        Alter: <input type="text" name="alter"><br>
        E-Mail: <input type="text" name="email"><br>
        Telefonnr.: <input type="text" name="telefon"><br>
        Passwort (Neu): <input type="text" name="passwordNeu"><br>
        Passwort (Wiederholung): <input type="text" name="passwordWdh"><br>
        <input type="checkbox" name="checkbox1" >AGB <br>
        <input type="checkbox" name="checkbox2" >Datenschutzbestimmungen <br><br>
        <button type="submit">Abschicken</button>
    </form>

So why do I get after i put in correct age, mail, phone and so on the errormessage "Email nicht korrekt: Mindestens 5, Maximal 20 Groß- oder Kleinbuchstaben, optional mit Sonderzeichen .- + (Punkt, Minus, Unterstrich, Plus) “@” gefolgt von beliebig vielen Klein- oder Großbuchstaben oder Zahlen .” gefolgt von minimal zwei, maximal drei Kleinbuchstaben

This message is coming up when my mail isnt correct at this if Statement:

else if (!mailKorrekt) {
    message3 += "Email nicht korrekt: Mindestens 5, Maximal 20 Groß- oder Kleinbuchstaben, optional mit Sonderzeichen " +
            ".- +“ (Punkt, Minus, Unterstrich, Plus) " +
            "“@” gefolgt von beliebig vielen Klein- oder Großbuchstaben oder Zahlen " +
            "“.” gefolgt von minimal zwei, maximal drei Kleinbuchstaben";
    session.setAttribute("message3", message3);

    request.getRequestDispatcher("profil.jsp").forward(request, response);

So my other methods dont make the same problem, even though their built up the same way (and i checked all the regex expressions on regexr.com, they are correctly done). What could be the problem?

Aucun commentaire:

Enregistrer un commentaire