tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
482
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cuchulainn cuchulainn ist offline Mitglied Bronze
    Registriert seit
    Sep 2003
    Ort
    Saarbrücken
    Beiträge
    47
    Hallo alle zusammen,

    ist es normal, dass bei JSF ein ActionListener bereits beim Laden bzw. Aktualisieren der Seite gestartet wird? Das ist überhaupt nicht in meinem Sinn, da der Listener zu einer Anlegen-Schaltfläche gehört, um einen neuen Datensatz in einer Datenbank anzulegen. Und das soll natürlich nicht bei jedem Aktualisieren oder Laden der Seite geschehen, sondern wirklich nur, wenn die Schaltfläche auch betätigt wird.

    Das ist der Listener auf meiner JSF-Seite:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
                    <h:panelGrid columns="2">
                        <h:outputLabel for="txtName">
                            <h:outputText value="Name:" />
                        </h:outputLabel>                    
                        <h:inputText id="txtName"
                                     value="#{sightView.sight.sightName}" />
                      
                        <h:outputLabel for="txtPrice">
                            <h:outputText value="Eintrittspreis:" />
                        </h:outputLabel>                    
                        <h:inputText id="txtPrice"
                                     value="#{sightView.sight.admissionPrice}" />
                        <f:facet name="footer">             
                            <h:commandButton value="Neu anlegen" actionListener="#{sightView.newSight}" />
                        </f:facet>
                </h:panelGrid>

    Und hier der dazugehörige Java-Code:

    Code :
    1
    2
    3
    
        public void newSight(ActionEvent event) {
            sightControl.saveSight(sight);
        }

    Vielen Dank,

    Christopher
     

  2. #2
    feederbob feederbob ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    6
    hey, hast du ein <h:form></h:form> um dein konstrukt, wenn nicht probiers mal mit. In deinem Post sieht man ja nicht deine komplette jsf-seite, deswegen frage ich.

    Ich selber habs noch nicht ActionListener mit jsf probiert, habs bisher so gemacht, dass ich mit action="#{....}" direkt die gewünschte Methode aufgerufen habe anstatt über einen ActionListener, probiersmal mit action ob das was ändert.
     

  3. #3
    SE Tutorials.de Gastzugang
    Also soweit wie ich JSP/JSF verstehe ist das mit einem ActionListener so nicht möglich da dieser ja auf ein ActionEvent wartet , du aber über HTTP nunmal so was nicht senden kannst *zumindest nicht ohne RMI*. Von daher wirst du wohl mit einem "normalen" Forumlar arbeiten und die eingaben auswerten müssen.
     

  4. #4
    sebastianb sebastianb ist offline Mitglied Gold
    Registriert seit
    Dec 2009
    Beiträge
    125
    Hallo,

    seltsam, ich kann da spontan jetzt keinen Fehler entdecken. Falls der Button nicht durch eine Form eingeschlossen sein sollte, sollte es überhaupt nicht möglich sein, dass er einen Event absetzt aber da die eventmethode automatisch ausgelöst wird, gehe ich davon aus, dass die methode durch einen anderen Event aufgerufen wird.Einfach mal STRG-F in der xhtml nach "sightView.newSight" suchen oder in der Java-Klasse rechtsklick auf die methode => open call hierachy.
    Ansonsten tausche mal das Attribut actionListener durch eine einfache Action aus:

    Code :
    1
    2
    3
    
    <h:form>
            <h:commandButton action="#{sightView.newSight}" value="test" />
          </h:form>

    Code java:
    1
    2
    3
    
    public void newSight() {
            //...
        }

    action = für Business-Logik / Navigationhandling
    actionListener = Interface-Logik


    Ansonsten, hast du den richtigen ActionEvent aus javax.faces.event.* importiert? Das hat mich nämlich mal einen halben Tag gekostet.

    Hier nochmal ein StepByStep-Beispiel:

    http://johnderinger.wordpress.com/20...ent-listeners/

    http://books.google.de/books?id=VA7m...page&q&f=false
    http://books.google.de/books?id=x8YY...page&q&f=false

    *EDIT* füg mal bitte in der Event-Methode ein getSource bzw ein getComponent hinzu, dann sehen wir genau wo der Event herkommt.

    Gruß

    Sebastian
    Geändert von sebastianb (13.09.11 um 15:40 Uhr)
     

  5. #5
    sebastianb sebastianb ist offline Mitglied Gold
    Registriert seit
    Dec 2009
    Beiträge
    125
    @Spike

    Das mit den Events ist unter JSF schon möglich. Sobald du auf deiner Seite einen Button klickst, wird zuerst ein ganz normaler HTTP-Request an den Server geschickt. Dieser wird dann vom Controller/FacesServlet im Servlet-Container entgegengenommen und an das jeweilige ManagedBean/Methode weiterdeligiert.

    http://javathreads.de/2009/10/model-...er-controller/

    Gruß

    Sebastian
     

  6. #6
    SE Tutorials.de Gastzugang
    Ahh ... danke für die Info. Ich kenne mich auf dem Gebiet EE , JSP / JSF halt nicht so aus ... und mit Beans habe ich noch nie zu tun gehabt.
     

  7. #7
    sebastianb sebastianb ist offline Mitglied Gold
    Registriert seit
    Dec 2009
    Beiträge
    125
    Kein Problem, hast mir ja auch schon ein paar mal ein paar nette Tipps gegeben Nichtsdestotrotz ist JSF ein sehr interessante Technik, bei der es sich auf jeden Fall mal lohnt reinzuschauen - außerdem ist die Lernkurve recht steil

    Gruß Sebastian
     

Ähnliche Themen

  1. Tabs beim Laden der Seite auswählen
    Von joky_joky im Forum PHP
    Antworten: 2
    Letzter Beitrag: 24.04.09, 12:48
  2. Ausgabe beim Laden der Seite....
    Von jmn im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 21.04.08, 16:44
  3. Beim Laden, Seite in den Vorgergrund
    Von Cusco im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 27.08.05, 10:35
  4. einmaliges aktualisieren beim laden der seite
    Von schneeWITCHen im Forum HTML & XHTML
    Antworten: 13
    Letzter Beitrag: 22.01.03, 20:38
  5. Antworten: 4
    Letzter Beitrag: 17.08.02, 18:24