Seite wird mit AJAX neu geladen

  • Themenstarter Themenstarter Xenya
  • Beginndatum Beginndatum
X

Xenya

Gast
Hallo,
ich verzweifel grad an einer AJAX-Funktion.
Vielleicht könnt ihr mir helfen.

Ich habe einen commandButton der beim Klick eine AJAX-Anfrage auslösen soll und damit ein paar Teile der Seite aktuallisieren soll aber NICHT die komplette Seite neuladen. Also eigentlich die standard Anforderung von AJAX-Anfragen. (Falls es wichtig ist: der Button wird mit jQuery gestaltet aber habe es testweise ohne gemacht, was nichts ändert)

So sieht mein Button aus:
Java:
<h:commandButton class="ui-button ui-button-text-only ui-state-default ui-corner-all" action="#{pageHandler.onClickedButton}" value="abschicken">
    <f:ajax execute="@form" render="@form"/>
</h:commandButton>

Wenn ich drauf klicke wird aber nicht nur die Form neu geladen sondern die komplette Seite.

In dieser "onClickedButton" Methode wird null zurückgegeben (habe es testweise auch mal mit actionListener probiert, allerdings ohne Erfolg).

Testweise habe ich es auch mal mit der JavaScript-API gemacht:
Java:
<h:commandButton class="ui-button ui-button-text-only ui-state-default ui-corner-all" action="#{pageHandler.onClickedButton}" value="abschicken" onclick="jsf.ajax.request(this, event, {execute: 'dieFormId',render: 'dieFormId'}); return false;"/>
Die Seite läd hier nicht neu, die Form aber schon. Wenn ich das return false; weglasse allerdings wieder nicht.
Funktionieren tut es über die JavaScript-API aber leider dennoch nicht (wäre auch nicht die schöne Lösung), da dabei onClickedButton irgend wie nicht ausgelöst wird.


Kann mir wer helfen?
Würde mich sehr freuen.

Danke
 
Du willst den Button ausführen d.h.execute ="@this"

Java:
<h:commandButton class="ui-button ui-button-text-only ui-state-default ui-corner-all" action="#{pageHandler.onClickedButton}" value="abschicken">
    <f:ajax execute="@this" render="@form"/>
</h:commandButton>

Ich denke das sollte funktionieren, wenn nicht render="@form" -> mit der Id der Form besetzen.

Grüße
 
Hallo JimPanse,
danke für deine Antwort.

Tut mir leid, dass ich jetzt erst dazu komme zu antworten.

Ich habe den tipp von dir umgesetzt und @this (bzw. testweise auch mit der ID) gemacht. Leider wird immer noch die gesamte Seite neu geladen.

Es steht also genauso da wie du geschrieben hast. Was mache ich immernoch falsch?
 
...........

ich habs grad raus gefunden.

es lag nicht an @form im execute. Sondern ich hatte ein leeres onevent drin.
also:

HTML:
<f:ajax execute="@form" render="@form" onevent =""/>

Ich habe das onevent noch leer gelassen, da es die Funktion noch nicht gibt aber kommen wird.
Nun, wenn man ein onevent mit leeren String schreibt ist es nicht das gleiche wie wenn onevent nicht geschrieben wird. Das heißt, er will eine Methode für das event eintragen was nicht vorhanden ist. Geht nicht, also ignoriert er ohne jegliche Fehlermeldung das AJAX-Tag und führt so einen normalen click aus.

Tut mir leid, dass ich euch wegen einem so kleinen und dummen Fehler nerven musste
 

Neue Themen


Zurück
Oben