JSF Ajax Command Link

moessi91

Bekanntes Mitglied
Hallo,
ich muss in der Schule gerade eine Bankanwendung in JSF schreiben und wir sind quasi ins kalte Wasser geworfen worden da wir uns die Informationen selbst im Internet suchen müssen :/
Nun ja, ich habe erst mal mit der Persistence angefangen was auch schon alles funktioniert. Im Design happerts bei mir aber immer. Ich bin jetzt gerade dabei ein Grundkonzept der Page zu machen und habe mir eine Navigationsleiste erstellt. Also das Grundkonzept der Page sieht so aus:
Index.xhtml
Java:
<h:body>
        <div id="top">
            <img src="images/Logo.png" width="505" height="172" alt="Logo"/>
        </div>
        <div style="width: 1010px;">
            <div id="navigation">
                <ui:include src="Navigation.xhtml" />
            </div>
            <div id="main">
                <ui:include src="Main.xhtml" />
            </div>
            <div style="clear: both;"/>
        </div>
    </h:body>
Hierbei sieht man, dass die Navigation und das Main fail immer eigens eingebunden werden.
Hier stehe ich jetzt an. Ich will irgendwie mit hilfe von Ajax nur den Teil main updaten.
Habe mich mal ein bisschen versucht bin aber gleich mal angestanden. Bitte um Hilfe.
Hier noch die Navigation.xhtml
Java:
<h:body>
        
        <c:choose>
            <c:when test="#{login.level == 0}">
                <h:form>
                    <h:commandLink id="Home" value="Test" action="Main"> 
                        <f:ajax execute="Home" render="main" />
                        
                    </h:commandLink>
                </h:form>
            </c:when>
        </c:choose>
        Home
        
    </h:body>
 
Also soweit ich weiß, funktioniert das so nicht mit DIV-Boxen, da du nur JSF-Elemente aktualisieren kannst (korrigiert mich, wenn ich falsch liege).

Du könntest aber ein Form-Element...Beispiel:

Code:
<div id="main">
     <h:form id="main_form">
          <ui:include src="Main.xhtml" />
     </h:form>
</div>
Vielleicht fällt dir auch ein besseres Objekt als Form ein... Mit einem outputLabel könnte es im Firefox Probleme geben, wenn du normale Buttons mit JavaScript-Funktionalität hast. Das Problem hatte ich eben erst 😉

per Ajax rufst du dann einfach
Code:
render=":main_form"
auf

bei execute kannst übrigens "@this" nehmen, da das Ajax-Element ja von dem ausführenden Objekt eingeschlossen wird. Also
Code:
<f:ajax execute="@this" render=":main_form" />

Du solltest für Ajax außerdem eigentlich "actionListener" anstatt "action" verwenden, da action die Seite neu läd... der Listener führt es quasi im Hintergrund aus.
 
Zuletzt bearbeitet:
ja das wars 🙂 habs zwar schon vorher herausgefunden gehabt aber danke nochmal 🙂
ich bind jetzt die seiten mit einer <ui:composition> ein und refreshe dann immer ein darüberliegendes form jetzt geht alles 🙂
 

Neue Themen


Zurück
Oben