# Seite wird mit AJAX neu geladen



## Xenya (11. Nov 2011)

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:

```
<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:

```
<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


----------



## JimPanse (11. Nov 2011)

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


```
<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


----------



## Xenya (16. Nov 2011)

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?


----------



## Xenya (16. Nov 2011)

...........

ich habs grad raus gefunden.

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


```
<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


----------



## JimPanse (17. Nov 2011)

Hi,

ok aber 
JSFAtWork, JSF 2.0 und Apache MyFaces

6.2.2 f:ajax im Einsatz

steht davon nichts das 'onevent' notwendig ist. Ich habe aber allerdings schon lange kein JSF mehr gemacht... ich würde sagen das 'onevent' wird onlick sein ;-)

Greetz


----------

