Aufruf von JSF-managed-bean-Methode mit Argumenten in jQuery
Ich bin mit JSF um eine Website zu bauen. Ich habe jQuery-Gritter (Knurren) Benachrichtigung auf meiner Homepage. Ist es möglich, den Anruf zu einem managed-bean-Methode innerhalb der before_close:
von $.gritter.add
Funktion?
Den code, den ich verwenden wollte ist wie folgt:
<h:body>
<c:forEach items="#{notificationBean.growlNotificationList}" var="p">
<script>
/* <![CDATA[ */
$.gritter.add({
//(string | mandatory) the heading of the notification
title: 'Notification',
//(string | mandatory) the text inside the notification
text: 'Comment on your staus',
//(bool | optional) if you want it to fade out on its own or just sit there
sticky: true,
//(int | optional) the time you want it to be alive for before fading out (milliseconds)
time: 8000,
//(string | optional) the class name you want to apply directly to the notification for custom styling
class_name: 'gritter-light',
//(function | optional) function called before it closes
before_close: function(e, manual_close){
'#{notificationBean.set0ToGrowlToShow(p.notificationID)}'
}
});
/* ]]> */
</script>
</c:forEach>
</h:body>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem aktuellen Versuch bloß interpretiert die gegebenen EL-Ausdruck, der als Wert Ausdruck und druckt nur sein Ergebnis unmittelbar während der Herstellung der HTML-Ausgabe mit der JS-code eingebettet. Es ist wie als wenn man mit
<h:outputText>
. Dies ist in der Tat nicht zur Arbeit gehen.Ist die funktionale Anforderung wird jedoch verstanden. Die standard-JSF-API nicht bieten eine ready-to-use Lösung für dieses. Wenn Sie möchten, zu bleiben, um zu standard-JSF-API, Ihre beste Wette ist, erstellen Sie ein ausgeblendetes Formular mit einem versteckten Befehl Verknüpfung, die Sie auslösen, mit JavaScript.
Grundsätzlich
mit
Dies ist jedoch ziemlich plump. Betrachten Sie für eine 3rd-party JSF-Komponente oder sogar utility library zu erreichen, die Anforderung jedenfalls. Die JSF-utility-Bibliothek OmniFaces hat die
<o:commandScript>
Komponente für diese. Siehe auch seine showcase-Seite.mit
(bitte beachten Sie, dass diese wird als HTTP-request-parameter, nicht als action-Methode argument)
Die JSF-Komponenten-Bibliothek PrimeFaces hat die
<p:remoteCommand>
für diese, die sehr ähnlich<o:commandScript>
. Siehe auch seine showcase-Seite. Noch mehr, PrimeFaces hat eine ready-to-use<p:growl>
Komponente, die nicht im wesentlichen die gleichen wie Ihre jQuery-plugin! Siehe auch seine showcase-Seite. Statt Ihre ganze jQuery-Sache, die Sie tun können:und füttern es mit Nachrichten von
Siehe auch:
<h:form id="foo" style="display:none"> <h:commandLink id="bar" action="#{notificationBean.set0ToGrowlToShow(p.notificationID)}"><f:ajax /></h:commandLink> </h:form>
. Werde ich platzieren Sie es außerhalb der <script> - tag.Component ID foo has already been found in the view.
in der Ausnahme<h:inputHidden>
dessen Wert man manipulieren mit jQuery. Ich habe bearbeitet die Antwort mit dem letzteren Ansatz.Müssen Sie verstehen, dass Sie benötigen, rufen Sie eine java-Methode, die läuft auf dem server und Sie NICHT direkt aufrufen.
In deinem Fall würde ich empfehlen die Verwendung von AJAX oder der gelesene Wert beim laden der Seite und verwenden Sie es (falls für Sie möglich)
Prüfen Sie, wie Sie verwenden können, AJAX mit Jquery