JSF ActionListener wird ausgeführt, aber ändert den Wert nicht.

Headhunter_X

Mitglied
Hallo,

ich versuche mich gerade an ActionListenern (JSF 1.2).
Dazu habe ich folgenden Listener programmiert:

Wenn ich auf den Button Klicke, soll er den Text für das OutputLabel ändern und ausgeben.
Sobald ich den Button geklickt habe, springt er auch in die Methode und findet auch die korrekte
Komponente. Nur leider wird der Wert nicht geändert.



Java:
import java.util.Iterator;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.component.html.*;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;


public class ActionListener1 implements ActionListener
{
    public void processAction(ActionEvent event) throws AbortProcessingException
    {

        System.out.println("########## ActionListener betreten.");

        HtmlOutputLabel text = null;

        List components = event.getComponent().getParent().getChildren();
        for(Iterator iter = components.iterator(); iter.hasNext();)
        {
            UIComponent element = (UIComponent)iter.next();
            if(element.getId().equals("outme"))
            {
                System.out.println("TextArea gefunden!");
                text = (HtmlOutputLabel)element;
            }
        }
        text.setValue("Funzt.");
    }
}

JSP-Seite:

HTML:
<h:form id="form1">
          <h:outputLabel value="" id="outme"></h:outputLabel>
          <p><h:commandButton styleClass="button"  value="Antrag absenden" id="save" action="success">
             <f:actionListener type="ActionListener1"></f:actionListener>
              </h:commandButton></p>
</h:form>
 

Headhunter_X

Mitglied
Du meinst, wenn man value ganz raus lässt? Hab ich versucht, geht aber nicht.
Dann hab ich den value einfach mal standardmäßig mit dem Wert "neu" gefüllt, wenn die Seite
aufgerufen wird. Wenn ich dann den Button drücke ändert er den Wert auch dann nicht. ;(
 
S

SlaterB

Gast
ich rede leider einmal mehr zu einem Thema in dem ich gerade gar nicht drin bin, nicht testen kann,
aber kann es sein, dass ein 'h:eek:utputLabel' überhaupt keine gesteuerte Kompnente ist?
deine UIComponent-Schleife ist ja auch reichlich fragwürdig,

wie sieht es mit Code a la
<h:eek:utputLabel id="usernameLabel" for="username" value="#{bundle.usernameLabel}" />
JSF HTML Tag Reference - Output Label
aus?
was auch immer alles dazugehört, in diesem Beispiel ist vielleicht gar von einem eher unveränderlichen Ressource-Bundle die Rede, aber allgemein kann man mit #{} doch sicher auch andere Variablen ansprechen,
dann musst du 'nur' irgendwo ein Feld mit dem richtigen Wert befüllen und dass im JSF berücksichtigen

------

dass es HtmlOutputLabel mit setValue() direkt als Quellcode gibt und "outme" wirklich gefunden wird,
spricht ein wenig dafür, dass deine Variante doch gehen könnte,
anderseits habe ich bisher keinen Internet-Link zu HtmlOutputLabel mit setValue() gefunden,
du versuchst da etwas rein ins Blaue, richtig?
 

Headhunter_X

Mitglied
Ich hab das Beispiel aus einem Buch und im Netz hab ich solche Beispiele auch gefunden.
Er erkennt ja im ActionListener die Komponenten nur ohne den Wert zu ändern.
Ich hab das auch schon mit einem CommandButton versucht und hab das gleiche Resultat.
 

Headhunter_X

Mitglied
Hallo,

ja ich hab das Projekt nochmal redeployed usw. Jetzt funktioniert es auch.

Aber ich hab eine weitere Frage, wenn ich beim CommandButton dem Action-Attribut eine Methode (speichern) verpasse:

HTML:
<h:form id="form1">
          <h:outputLabel value="" id="outme"></h:outputLabel>
          <p><h:commandButton styleClass="button"  value="Antrag absenden" id="save" action="#{Controller.speichern}">
             <f:actionListener type="ActionListener1"></f:actionListener>
              </h:commandButton></p>
</h:form>

Da wird der Wert dann nicht mehr geändert. Obwohl die Methode als Rückgabewert ebenfalls success
zurück gibt und das so auch in der faces-config eingetragen ist.

Controller:
Java:
......
public String speichern()
{
    //Andere Operationen
    ....

    return "success";
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
S Rendern einer Komponente nach actionListener Web Tier 2
F PrimeFaces commandButton und actionListener Web Tier 6
G ActionListener Events zweimal gefeuert Web Tier 3
L Set<T> Attribut eines Objektes wird zu null in thymeleaf Web Tier 2
C JSP data wird nicht angezeigt Web Tier 6
jann Servlet Bei jedem Request wird eine neue Session erstellt. Web Tier 6
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
W Tabelle wird nicht aktualisiert Web Tier 8
A JSF String wird nicht angezeigt Web Tier 2
S JSF CSS wird gefunden aber inhaltlich nicht angewendet Web Tier 2
R get-methode der Managed-Bean wird immer 3 mal ausgeführt Web Tier 4
R JSF ManagedProperty wird nicht erstellt Web Tier 1
G JSF Radio Button ValueChangeListener Wert wird nicht übernommen Web Tier 2
M fileUploadListener geht nicht wenn Element zur Laufzeit gerendert wird Web Tier 2
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
F JSF CSS Verschachtelung wird nicht abgebildet Web Tier 2
F.S.WhiTeY Servlet Servlet wird nicht angesprochen Web Tier 3
D JSF a4j:support wird nicht gefunden Web Tier 2
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
T JSF wird nicht ausgeführt Web Tier 4
aze JSF CommandButton:Action wird nicht ausgeführt Web Tier 2
L JSF Beispiel wird nicht ausgeführt Web Tier 2
T JSF Eigener Converter wird nur für Eingabekomponenten aufgerufen? Web Tier 3
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
L einfache JSF-Seite wird nicht angezeigt Web Tier 8
B JSF HtmlCommandButton --- Action wird nicht aufgerufen Web Tier 2
N JSF [Maven] Seam 2.2, Richfaces 3.3 - a4j wird nicht umgewandelt Web Tier 6
P JSF AJAX render wird nicht ausgeführt Web Tier 4
X Seite wird mit AJAX neu geladen Web Tier 4
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
borobudur Servlet Business-Logik wird bei jedem Request neu erstellt Web Tier 13
J JSF JSF2.0 template wird nicht gerendert!? Web Tier 2
C GWT: RPC wird nicht gefunden Web Tier 3
I Beim zurück-Link wird immer ein Request ausgeführt Web Tier 5
E JSP ist es noch aktuell oder wird heute was anderes genutzt? Web Tier 3
D [JSF] Lifecycle Methode wird mehrfach aufgerufen Web Tier 4
J JSF Custom Component ValueExpression wird nur als String erkannt Web Tier 2
E init() wird mehrmals aufgerufen Web Tier 4
L [RichFaces] Applikation wird mit NullPointerException beendet Web Tier 5
E CSS wird nach RequestDispatcher.redirect nicht mehr geladen Web Tier 7
V JSF: dataTable Getter wird nie aufgerufen Web Tier 6
megachucky JSF - JSTL Library wird nicht gefunden Web Tier 4
Z Servlet Response HTTP-Status 200 wird nicht übertragen Web Tier 3
K [gelöst] JSF-Seite wird nicht angezeigt Web Tier 3
H JSF Seite wird plain angezeigt Web Tier 3
N URL bei WebApp wird immer laenger Web Tier 5
G JSP/JSF Inputtext rerender wenn Value geändert wird Web Tier 2
I servlet: init wird auch nach ServletException aufgerufen Web Tier 3
R JSF Beans werden nicht ausgeführt Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben