From 0fb880cf8b67e4b31f40db8c80e033a6b1779400 Mon Sep 17 00:00:00 2001
From: 0qln <0qln@proton.me>
Date: Thu, 12 Feb 2026 20:26:16 +0100
Subject: [PATCH] uebung4/aufgabe16
---
.../demo/beans/PasswortManagedBean.java | 70 +++++++++++++++++++
.../aufgabe16/passwortValidierer.xhtml | 27 +++++++
.../aufgabe16/passwortValidiererRegEx.xhtml | 28 ++++++++
3 files changed, 125 insertions(+)
create mode 100644 src/main/java/org/example/demo/beans/PasswortManagedBean.java
create mode 100644 src/main/webapp/uebung4/aufgabe16/passwortValidierer.xhtml
create mode 100644 src/main/webapp/uebung4/aufgabe16/passwortValidiererRegEx.xhtml
diff --git a/src/main/java/org/example/demo/beans/PasswortManagedBean.java b/src/main/java/org/example/demo/beans/PasswortManagedBean.java
new file mode 100644
index 0000000..e93b9de
--- /dev/null
+++ b/src/main/java/org/example/demo/beans/PasswortManagedBean.java
@@ -0,0 +1,70 @@
+package uebung;
+
+import java.io.Serializable;
+
+import jakarta.enterprise.context.SessionScoped;
+import jakarta.faces.application.FacesMessage;
+import jakarta.faces.component.UIComponent;
+import jakarta.faces.context.FacesContext;
+import jakarta.faces.validator.ValidatorException;
+import jakarta.inject.Named;
+
+@Named
+@SessionScoped
+public class PasswortManagedBean implements Serializable {
+ private String passwort;
+
+ public PasswortManagedBean() {
+ passwort = "";
+ }
+
+ public String getPasswort() {
+ return passwort;
+ }
+
+ public void setPasswort(String passwort) {
+ this.passwort = passwort;
+ }
+
+ public void validate(FacesContext context, UIComponent ui_component,
+ Object object) throws ValidatorException {
+
+ String eingabe = (String) object;
+
+// boolean enthaeltGrossbuchstaben = false;
+// boolean enthaeltKleinbuchstaben = false;
+// boolean enthaeltZahl = false;
+// for (int i = 0; i < eingabe.length(); i++) {
+// if(Character.isUpperCase(eingabe.charAt(i))){enthaeltGrossbuchstaben = true;}
+// if(Character.isLowerCase(eingabe.charAt(i))){enthaeltKleinbuchstaben = true;}
+// if(Character.isDigit(eingabe.charAt(i))){enthaeltZahl = true;}
+// }
+// if(!(enthaeltGrossbuchstaben && enthaeltKleinbuchstaben && enthaeltZahl)){
+// throw new ValidatorException(new FacesMessage(
+// "Fehler beim Validieren des Passworts!"));
+// }
+
+// oder alternativ mit einem regulaeren Ausdruck:
+ if (!eingabe.matches(".*[A-Z].*")
+ || !eingabe.matches(".*[a-z].*")
+ || !eingabe.matches(".*[0-9].*")) {
+ throw new ValidatorException(new FacesMessage(
+ "Fehler beim Validieren des Passworts!"));
+ }
+
+// oder alternativ mit einem verbesserten RegEx:
+// ?= bewegt den Suchzeiger innerhalb des Quellstrings nicht weiter und
+// sucht ob direkt nach der aktuellen Position das angegebene Pattern folgt.
+// - ^ positioniert den Zeiger am Anfang
+// - (?=.*\\d) prüft, ob nach der aktuellen Position (Anfang) beliebige Zeichen
+// und dann eine Ziffer folgt. Somit wird geprüft, ob im String eine
+// Ziffer enthalten ist. Der Zeiger bleibt am Anfang stehen.
+// - Die weiteren (?=.*...) prüfen, ob nach der aktuellen Position (Anfang)
+// kleine Buchstaben (?=.*[a-z]) oder große Buchstaben (?=.*[A-Z]) folgen.
+// - Das letzte .* sagt aus, dass danach beliebige weitere Zeichen folgen können.
+ if(!eingabe.matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*$")){
+ throw new ValidatorException(new FacesMessage(
+ "Fehler beim Validieren des Passworts!"));
+ }
+ }
+}
diff --git a/src/main/webapp/uebung4/aufgabe16/passwortValidierer.xhtml b/src/main/webapp/uebung4/aufgabe16/passwortValidierer.xhtml
new file mode 100644
index 0000000..5a427cb
--- /dev/null
+++ b/src/main/webapp/uebung4/aufgabe16/passwortValidierer.xhtml
@@ -0,0 +1,27 @@
+
+
+
+