Wie nennen JSF backing bean-Methode nur, wenn onclick - /oncomplete/auf... tritt das Ereignis und nicht auf die Seite laden
Ich habe zwei Bild-Tasten:
<div class="sidebarOptions">
<input type="image" src="images/homeButton.jpg" onclick="#{home.setRendered(1)}"/>
</div>
<div class="sidebarOptions">
<input type="image" src="images/memberButton.jpg" onclick="#{home.setRendered(2)}"/>
</div>
Jedoch, das beide Methoden werden sofort aufgerufen, wenn die Seite geladen mit den Werten 1 und 2. Auch wenn ich es auf, die beiden Methoden aufgerufen werden.
Wie Erreiche ich die gewünschte Funktionalität nur den Aufruf der bean-Methode, wenn die Schaltfläche Bild wird eigentlich geklickt?
InformationsquelleAutor Surbhit | 2012-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Ansatz wird nicht funktionieren. Sie scheinen zu verwechseln/vermischen Sie die grundlegenden web-Entwicklung Konzepte des "server-side" und "client-Seite" und sein Missverständnis der Rolle von JSF und EL.
JSF ist server-side-Sprache, die läuft auf dem webserver über ein HTTP-request und erzeugt HTML - /CSS - /JS-code, die zurückgegeben mit der HTTP-Antwort. Alle EL-Ausdrücke in form von
${}
und#{}
ausgeführt werden, die in der server-Seite beim generieren der HTML-Ausgabe. JavaScript ist eine client-side-Sprache, die ausgeführt wird, auf dem webbrowser und funktioniert auf die HTML-DOM-Baum. Die HTML-onclick-Attribut angeben sollen eine JavaScript-Funktion, die ausgeführt werden, in der client-Seite auf die bestimmten HTML-DOM-event.Um sich auf eine JSF managed bean Methode, müssen Sie die
action
oder*listener
Attribut. JSF-Komponenten zu erzeugen, um die gewünschte HTML und geben Sie die gewünschte ajax-Aktionen, die zu einer Veränderung der server-Seite-Zustand. Ein<input type="image">
erzeugt werden kann, mit einem<h:commandButton image>
. Eine bean-Methode kann aufgerufen werden, indem dieaction
- Attribut der Komponente. Diese Komponente kann ajaxified durch die Einbettung der<f:ajax>
tag.So, sollte Folgendes für Sie tun:
Siehe auch:
<p:commandLink id="deleteExecutionResBtn" onclick="deleteConfirmation.show();" action="#{projectCampaignManagementMB.setExecutionResindex(#{rowIndex})" style="margin-right:5px" title="delete an Execution Result"> <h:graphicImage value="../images/cssImg/sub_blue_delete.png" heigth="30" width="35" /> </p:commandLink>
aber ich bin immer:Fehler beim analysieren des Ausdrucksdieses problem ist unabhängig. Entfernen Sie die innere
#{
und}
. Dies ist ungültig.vielen Dank, es funktioniert jetzt :)))
Es war ein wenig zum Abschluss zu springen, in der Annahme, dass 'Missverständnis der Rolle von JSF und EL'. Ich war auf der Suche in dieser Lösung, wie ich weiß, dass onclick würde sich nicht auf die die gesamte jsf-Lebenszyklus, und ich könnte einfach machen Sie einen ajax-Aufruf ohne überprüfung. Ich könnte möglicherweise rufen Sie einen aus, um ajax-Aufruf direkt mit javascript ... Aber das Lesen zwischen den Zeilen scheint es zu sein, ich könnte in der Lage sein zu tun, mit einem Hörer.
InformationsquelleAutor BalusC