JSF Mit Enter ein Login bestätigen?

JayGabriel

Aktives Mitglied
Hallo,

ich hoffe, ihr könnt mir bei dem kleinen Problem helfen:

Ich möchte, dass der Login mit einem Enter nach der Passworteingabe bestätigt werden kann, wie als wenn man den Login-Button gedrückt hat. Am Anfang, bevor ich Apache Tiles eingebunden habe, funktionierte es, ohne, dass ich etwas anderes tun musste, doch nun klappt es nicht mehr.

Soweit ich weiß, wird beim Enter, wenn man nichts anderes angibt, immer der erste
Code:
<input type="submit"/>
auf der Seite angesprochen, das wär bei mir ein Menupunkt, doch der wird auch nicht angesprochen, da nichts passiert (mit Konsolenausgaben geprüft). Wenn ich mit Tab durch die einzelnen Elemente gehe, funktioniert es mit anschließendem Enterdürcken ebenfalls nur auf dem Button selbst und nicht im PW-Feld.

Wie kann ich es einrichten, dass das Enter erkannt wird und alle Funktionen, wie auch beim Login-Button aufgerufen werden? Action und ActionListener Attribute gibt es bei
Code:
inputSecret
Feldern nicht. Und Accesskey auf 13 setzten bringt auch nichts.

Einer meiner Ansätze war mit den "onkeyup" und Co Attribute zu arbeiten, doch bisher bin ich da zu keinem Ergebnis gekommen, da ich keine Ahnung habe, wie ich damit arbeiten soll.

Wenn ich im
Code:
inputSecret
Feld das Attribut
Code:
onkeyup="if(event.keyCode==13){loginController.login();}"
so setzte, passiert auch weiterhin nix. Augenscheinlich funktioniert das zumindest nicht. ;)

Mein PW Feld:
[XML]<t:inputSecret id="passwordinput" value="#{loginController.password}">
<f:validator validatorId="de.webproject.test.validator.LoginValidator"/>
</t:inputSecret>[/XML]

Mein LoginButton:
[XML]<t:commandButton value="Anmelden" action="#{loginController.login}" actionListener="#{loginController.haveTo}" alt="Login">
<f:attribute name="pass_contr" value="#{passwordController}"/>
<f:attribute name="which_user" value="#{loginController.user}"/>
</t:commandButton>[/XML]

Kann mir einer von euch dabei weiter helfen?

Mfg
Jay
 
S

Sym

Gast
Seam bietet einen <s:defaultButton />, der Dir diese Arbeit abnehmen kann. Die lösen das über JavaScript. Ansonsten daran einfach mal orientieren. :)
 

JayGabriel

Aktives Mitglied
Danke für die schnellen Antworten:

@Sym: ich hab mal nach Seam gegooglet, aber das Einarbeiten dahingehend, dauert wohl noch etwas. Einen Tag <defaultButton> habe ich in der Tab-Referenze dort übrigens nicht gefunden, aber wahrscheinlich ist diese Seite nicht die richtige, um sich darüber zu informieren.

Hast du möglicherweise ein Beispiel oder eine Seite, wo mehr dazu steht?

@nocturne: dein "type=submit" hilft mir jetzt nicht wirklich weiter. Wo meinst du, soll ich das hinzufügen? Ein Attribut namens "type" gibt es beim "inputSecret" nicht und auch wenn ich meinen Login-Button dem Typ verpasse, passiert nichts, wenn ich nach der Passworteingabe Enter drück.

edit: Ja, auf der Seite bin ich auch schon gelandet, doch wirklich schlau werde ich nicht draus. Zum einen schreibt da einer, dass es beim "inputSecret" Feld nicht gehen würde. Und dann schreibt jemand, dass es mit einem weiteren nur versteckten Input gehen würde. Wobei ich da nicht wirklich den Sinn verstehe, oder was das ändern soll... ich habe ja mindestens zwei Input Felder auf meiner Seite... :bahnhof:

---

Ich habe es nun noch mit diversen anderen JavaScript Varianten versucht, bin da aber auch nicht wirklich vorwertsgekommen. Das einzige Blinzeln der Seite kommt, wenn ich
Code:
onkeyup="if(event.keyCode==13) {this.submit();}"
einfüge. Nur dann wird der Login-Validator zumindest ausgeführt. Aber es soll ja die Button-Funktionen aufrufen, aber mit
Code:
onkeyup="if(event.keyCode==13) {document.getElementById('btnlogin').click();}"
geht auch nix.

Da ich zwischendurch dachte, dass das "inputSecret" vielleicht da einen Strich durch die Rechnung macht, habe ich mal ein stinknormales "inputText" benutzt, mit dem gleichen nichtsbringenden Erfolg.

Jetzt bliebe noch die Möglichkeit mit dem 'versteckten' Input, nur habe ich keine Ahnung, was genau der Poster damit bezwecken will...

mfg
Jay

edit2: ich glaube, ich weiß, woran es liegt. Wenn ich es Schritt für Schritt ausprobiere, komme ich soweit, bis ich die ganze Sache mit der ID meines Buttons verbinden will. Und da haberts...
JSF generiert einen Rattenschwanz zu der ID hinzu (sieht im Quelltext so aus:
Code:
j_id_jsp_324710854_0pc6:btnLogin
). Wie bekomme ich ich diesen Rattenschwanz weg? Gibt es da eine Möglichkeit?

edit3: Ja, solch eine Möglichkeit gibt es :) Ich habs:

Mein PW Input musste nun so aussehen:
[XML]<t:inputSecret id="passwordinput" value="#{loginController.password}" onkeyup="if (event.keyCode == 13) document.getElementById('btnLogin').click();">[...][/XML]

Und mein Button:
[XML]<t:commandButton id="btnLogin" value="Anmelden" action="#{loginController.login}" actionListener="#{loginController.haveTo}" alt="Login" forceId="true">[/XML]

Wichtig halt, die ID des Buttons und das
Code:
forcedID="true"
setzen. Und dann die Abfrage nach Enter (KeyCode == 13) und dann der Zugriff auf das Element mit der entsprechenden ID und dann die Aktion, die ausgeführt werden soll bei diesem Element.

Tipp: ich bin Schritt für Schritt hingekommen, als ich mir mit dem
Code:
alert();
anzeigenlassen habe, was in den einzlenen Zugriffspunkten drin steht. Dort war im
Code:
document.getElementById('btnLogin')
"null" gewesen, und so bin ich auf diesen seltsamen "Rattenschwanz" bei den IDs aufmerksam geworden.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
platofan23 Java Login Überprüfung ohne Srciptlets in der JSP Web Tier 4
F Formular nach erfolgreichem Login ausblenden Web Tier 0
S JSF Login mit redirect Web Tier 1
J JSF Login/Registrieren Feature mit JBoss AS 7.1.0 Web Tier 0
D Java EE Servlet login Problem Web Tier 1
Q JSF bei Session-Timeout Weiterleitung auf spezielle Login-Seite Web Tier 15
W JSF Login funktioniert nicht Web Tier 12
W JSF Komisches Verhalten nach Login per Realm Web Tier 4
M JSF Login realisieren Web Tier 4
T JSF Login? Web Tier 2
E Login mit JSF 2.0 und Glassfish 3.1.1 (in Netbeans 7.0.1) Web Tier 2
B JSF Login authentication schaffe ich nicht Web Tier 2
P JSF Login per Ajax validieren. Was ist der Beste Weg? Web Tier 4
T JSP Session Login - Sicherheit Web Tier 4
D JSF 2.0 Login Web Tier 4
I Wie bekomme ich Angaben zum letzten Login Web Tier 2
K JSP Login Code Web Tier 14
G Probleme mit Ajax Login (jsp) Web Tier 5
D Login wie realisieren? Web Tier 12
J Problem mit Login Web Tier 4
G JSF h:form Tag Login über j_security_check und weiterleiten Web Tier 5
console MVC: Servletweiterleitung umgeht Login Authentifizierung Web Tier 2
D JSF+Weiterleitung zu einer Login-Page Web Tier 1
L JSP Tomcat Login Web Tier 6
T html login und apache client Web Tier 13
G WebSeite hinter einem Login auslesen Web Tier 8
D Login mit Filter (JSP/JSF) Web Tier 3

Ähnliche Java Themen

Neue Themen


Oben