Problem mit ActionListener

Status
Nicht offen für weitere Antworten.

bravoman

Mitglied
Hallo Leute,

ich versuche gerade mich in JSF einzuarbeiten. Ich habe zwar Erfahrungen
mit Servlets und JSP und deshalb erscheint mir JSF auch nicht allzu
schwierig. Dennoch hänge ich jetzt bei einer grundlegenden Sache fest.

Also...
Ich benutze NetBeans 6.0 mit dem integrierten Tomcat oder Glassfish
(Problem besteht bei beiden Servlet-Containern).

Ich habe dieses Tutorial versucht:
jsf.iatp.org.ua/components/jsf_htmlselectmanylistbox.html

Ich erhalte keine Meldungen oder Exceptions. Nach Auswahl von Items aus der Liste und
anschliessendem Drücken des Buttons passiert einfach "garnix" :p

Das Problem scheint hier zu liegen:

Code:
...
<h:commandButton value="Show Selected" actionListener="#{staticPageBean.showSelected}" />
<h:outputText binding="#{staticPageBean.selItemsOutput}" />
...

Ich habe versucht einen Breakpoint in der vom ActionListener auzurufenden Methode
zu setzen. Doch scheint es so, dass dieser nie erreicht wird.

Egal ob Glassfish oder Tomcat, ob actionListener als Attribut oder als Tag,
ob Linux oder Windows, ...

Daraufhin habe ich ein eigenes kleines Test-JSF geschrieben um den Fehler einzukreisen:

JSF Ausschnitt:
Code:
...
<h:messages style="color: blue"/>

<h:commandButton id="button01" value="Klick mich" action="success">
<f:actionListener type="events.MyListener"/>
</h:commandButton>
...

Java ActionListener:

Code:
package events;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;

public class MyListener implements ActionListener {

public MyListener() {
}

public void processAction(ActionEvent ae) throws AbortProcessingException {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("button geklickt"));
}

}

Wieder keine Ausgabe, keine Exception, kein garnichts, ...

Wäre für jeden Hinweiss dankbar...
 

SnooP

Top Contributor
Wie sieht denn die zugehörige faces-config aus? Wenn du einen ActionListener registriert hast, solltest du evtl. aus dem Tag das "action" Attribut rausnehmen.

Wenn du einfach auf eine controller-Methode zugreifen möchtest über deinen Command-Button reicht ein:
action="#{controller.methode}". Dann muss es im Controller (managed-bean in faces-config) die Methode "methode" haben, die einen String zurückliefert... und dann lüppt das ooch.
Das binding brauchst du auch immer nur, wenn du im Controller direkt auf die UI-Komponente zugreifen möchtest - wenn du andersrum in der View nur auf Daten aus dem Controller zugreifen möchtest, reicht auch ein value.
Ich persönlich finde den Weg über die bindings immer etwas merkwürdig - es sei denn, es handelt sich z.B. um DataTables.
 

bravoman

Mitglied
Danke für die schnelle Antwort!

Das Problem ist, dass actionListener garnicht funktionieren.
Klar könnte man immer etwas nur mit action zurechtbasteln,
aber das ist keine Lösung.
Binding hat eigentlich garnichts damit zu tun, denn in meinem
2ten Beispiel soll die Ausgabe über <h:messages> geschehen.

zu faces-config:

Also wenn ich soetwas versuche:

actionListener type="#{meineBean.machEtwas}"

dann muss ich natürlich die Bean in faces-config registrieren.
(habe ich auch ;) )

Aber wie ist das, wenn ich:

actionListener type="meinPackage.meinListener"

versuche? Muss die Listener Klasse dann auch
irgendwo angegeben werden?

Übrigens funtioniert keines von beidem bei mir :p
 
M

maki

Gast
Vergiss die Idee das JSF Ähnlichkeit hat mit "normaler" JSP und Servlet Entwicklung, hat es nicht, sieht nur oberflächlich so aus.
Hol dir FacesTrace (googlen).
Lerne das JSF Phasenmodell.

Hast du ein gutes Buch über JSF?
 

bravoman

Mitglied
Danke,

es mangelt nicht an Büchern und Tutorials.
Die Unterschiede sind mir bewusst und der Lifecycle bekannt.
Wahrscheinlich ist es ein Konfigurations-Problem.

Werde das einfache Beispiel nochmal ohne IDE,
auf einen standalone Tomcat versuchen...
 
M

maki

Gast
Hol dir unbedingt FacesTrace.

Viele sind am Anfang verwundert, das Validierung und Konvertierung dafür sorgen können, dass man in einer View festhängt, ohne das es zu einer Exception/Stacktrace kommt.
 

bravoman

Mitglied
Validator und Converter funktionieren reibungslos.
Nur ActionListener nicht..

Hast Du vielleicht eine Idee warum mein einfaches Beispiel
hängt?
 

bravoman

Mitglied
ok FacesTrace eingebaut.
was nu?

bleibt immer im view, keine änderung.
aber eigentlich doch auch richtig, da ich nur
die komponenten ändere und keinen wirklichen request auslöse, oder?
 
M

maki

Gast
bleibt immer im view, keine änderung.
aber eigentlich doch auch richtig, da ich nur
die komponenten ändere und keinen wirklichen request auslöse, oder?
Hmm... solltest da nicht ein JavaScript handler sein der ein submit bei onclick ausführt?
 

bravoman

Mitglied
da hast du wohl recht.

es sollte soetwas nach dem rendern herauskommen.
hab' mal die ausgabe im browser gecheckt,
aber da gibts kein onclick im button input.

was jetzt?
 

bravoman

Mitglied
Also...

Ich bekomme das im Browser angezeigt:

Code:
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSF Page</title>
    </head>
    <body>
        <select name="j_id_jsp_1895076312_1" multiple="multiple" size="5">
        <option value="firstName">First Name</option>
	<option value="lastName">Last Name</option>
	<option value="age">Age</option>
	<option value="sex">Sex</option>
        </select>
        <input type="submit" name="j_id_jsp_1895076312_6" value="Show Selected" />
    </body>
</html>

Mir ist klar, dass da rein garnichts passiert, wenn man den Button klickt.
Aber warum wurde kein onClick reingerendert?
 

bravoman

Mitglied
OK, ich hab's endlich :)

Vielen Dank an dich maki...

es war zwar kein JavaScript aber es hat mich auf den richtigen
Weg geführt. Ohne onClick oder form passiert natürlich nichts.
Einfügen von <h:form> ... </h:form> wars ;)
 

SnooP

Top Contributor
Also wenn ein <h:form> darum steht, dann sollte jsf über die faces-config die zugrundeliegende managed-bean erkennen.

Wenn du den type=... direkt angibst, brauchst du den Listener nicht extra bekannt machen.

und... mir fällt eigentlich keine sinnvolle Sache ein, weshalb man einen ActionListener explizit braucht. Eigentlich nur, wenn man immer mehrere Listener gleichzeitig benachrichtigen muss/will. Aber warum eigentlich? ;) ... wir gehen hier immer über das action-attribut (da wird implizit ein Listener zwischengehängt).

edit: okay lol - zu spät ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Problem mit Update von ApacheHttpClient von 5.2 auf 5.3 Allgemeines EE 10
D Problem mit redundanten Servern Allgemeines EE 7
Azemaria JSF: Problem bei der einfachsten Applikation Allgemeines EE 2
P JPA Internal Problem Nullpointer Allgemeines EE 10
S MessageDrivenBean Problem beim Zugriff auf Stateful EJB Allgemeines EE 2
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
B Problem beim Lesen des Codes... Allgemeines EE 2
R JPA Problem beim Speichern eines Users Allgemeines EE 2
S WebSocket Problem Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
Raidri [SEAM] rich:dataTable sortBy Problem Allgemeines EE 6
T Problem mit den Beispielen von Apache Allgemeines EE 5
W JSF Validator Problem HTTP Status 500 Allgemeines EE 2
E JBoss 7.1 Datasource Problem Allgemeines EE 2
M JSP Problem -unbestimmte Anzahl von Werten Transportieren Allgemeines EE 9
S Problem mit EJB Verständnis Allgemeines EE 4
B Problem beim einbinden einer CSS in eine JSP Allgemeines EE 8
F JSP Problem mit Datenbankanbindung über Glassfishserver Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
S Embedded JBoss Problem beim Deployment Allgemeines EE 4
E Session Problem Allgemeines EE 9
F problem mit nullpointer bei DB zugriff Allgemeines EE 2
A Erste Schritte... Problem mit Hibernate Allgemeines EE 15
ruutaiokwu jboss problem - work-verzeichnis muss manuell gelöscht werden??? Allgemeines EE 5
Stillmatic sendRedirect Problem! Allgemeines EE 3
M Problem mit Lookup auf EJB3 mit Glassfish Allgemeines EE 11
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
X JBoss InitialContext problem Allgemeines EE 5
LordZed Problem mit dem einbinden von Bibliotheken, die sich gegenseitig verwenden Allgemeines EE 5
H GWT Problem beim Ausführen Allgemeines EE 8
Q Problem mit JMS und Weblogic 10 Allgemeines EE 5
E Performance-Problem beim ersten Request Allgemeines EE 4
G Multi User Problem Allgemeines EE 8
G Datasource Problem Allgemeines EE 1
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Problem mit EJB: Bean soll Objekt eigener Klasse zurückgeben Allgemeines EE 2
N JavaMail Problem Allgemeines EE 4
N JBoss Problem mit Bibliothek in unterschiedlichen Versionen Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
G Simples JSF-Projekt in Eclipse - Problem Allgemeines EE 9
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
J Problem mit EJB Aufruf und DualCore Rechner Allgemeines EE 4
J ejb3.0 datenbank problem Allgemeines EE 2
J Problem mit Zurück-Button Allgemeines EE 2
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
J problem mit jsp/js Allgemeines EE 2
B Help - EJB2 - Problem mit Hybernate und "LIMIT" Allgemeines EE 6
B JSTL Problem Allgemeines EE 8
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
S Problem mit t:selectOneRadio und ValueChangeListener Allgemeines EE 2
S Problem mit Struts und tiles Allgemeines EE 4
B Problem mit JBoss-4.2.1.GA Allgemeines EE 8
N Tiles - JSF Problem Allgemeines EE 3
M JSF & EJB "Bean not bound" Problem Allgemeines EE 4
V MYSQL JDBC;java.lang.ClassNotFoundException; Problem Eclipse Allgemeines EE 3
megachucky JMS - Problem mit TemporaryQueue Allgemeines EE 2
G Problem mit MimeType/ContentType Allgemeines EE 4
E Java Mail problem Allgemeines EE 5
Y XFire - Maven Build Problem Allgemeines EE 2
D JSP Problem mit equals? Allgemeines EE 2
A Eclipse Start-Problem Allgemeines EE 5
S JSF - Custom converter Problem Allgemeines EE 3
Y JSF Uhrzeitausgabe Problem Allgemeines EE 4
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
Y JSF - rendered Problem Allgemeines EE 1
D Servlet Problem über Server Allgemeines EE 26
Zed JSF h:inputText h:outputText update Problem Allgemeines EE 2
K mysql treiber problem wenn import java.sql.* bei _servlet_ Allgemeines EE 2
S JDBC Mysql Connection Problem - datasource null Allgemeines EE 3
T Session-Problem Allgemeines EE 2
R Tiles - Layout-Problem wegen Leerzeichen Allgemeines EE 6
G Tomcat / Eclipse oder Web.xml Problem Allgemeines EE 11
S Netbeans 5.5 Visual Web Pack Problem mit INSERT und PK Allgemeines EE 4
D JSF Problem mit Action Allgemeines EE 2
F Klassen und zugriffs Problem "Help wanted"! Allgemeines EE 16
D <input type="file"> Problem Allgemeines EE 6
N Struts - Problem mit <html:link> Action Allgemeines EE 3
A Problem / Fehler beim Einbinden einer Klasse in ein JSP Allgemeines EE 20
G Session Problem Allgemeines EE 5
T Ant Compiler Problem Allgemeines EE 9
T Problem dem Zaehler in mein Java - Code Allgemeines EE 2
A Hibernate-Problem mit MySQL-Cluster Allgemeines EE 6
H Servlet problem Allgemeines EE 10
G Problem mit Benutzerverwaltung Allgemeines EE 3
S Hibernate Mapping Problem Allgemeines EE 3
S Hibernate INSERT Problem Allgemeines EE 11
S Dummes JSP-Problem Allgemeines EE 8
P EJB-Installations-Problem Allgemeines EE 4
S CSS Problem in JSP Allgemeines EE 16
C Problem mit html:optionsCollection Allgemeines EE 4
R HILFE: Problem mit JSF examples Allgemeines EE 10
R Problem mit value-expression Allgemeines EE 7
R Problem mit for-schleife in JSP tag Allgemeines EE 8
B Struts Problem: Array in JSP ausgeben (logic:iterate) Allgemeines EE 12
M Redirct-Problem Allgemeines EE 4
M Geronimo v1.1 - Problem mit EAR deployen Allgemeines EE 5
S Problem mit Servlet Allgemeines EE 11

Ähnliche Java Themen

Neue Themen


Oben