Wie übergeben Sie die backing-bean-Wert zu JavaScript?
Ich würde gerne Lesen Sie die backing-bean-Wert in JSF und übergeben Sie dann über JavaScript, darf ich wissen, wie dies getan werden kann?
Backing-bean-Beispiel-code:
@ManagedBean(name="enquiry")
@SessionScoped
public class Enquiry {
public boolean noQuery;
/** getter and setter **/
}
In XHTML Beispielcode, ich möchte passieren die backing-bean-Wert und dann pass in showNoQueryPrompt()
wie diese:
<h:commandLink onClick="showNoQueryPrompt(#{enquiry.noQuery})">
</h:commandLink>
Und dann im JavaScript-code, ich kann den boolean-Wert, um festzustellen, ob ich Sie auffordern sollte oder nicht prompt. Hier ist der code:
<script ...>
var showNoQueryPrompt(Boolean showPrompt) {
if( showPrompt == "true" ) {
alert('No query');
}
}
</script>
legen Sie es einfach in versteckte Eingabe
InformationsquelleAutor huahsin68 | 2012-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf den Punkt, Sie müssen verstehen, dass JSF entsteht lediglich HTML-code und das JS ist Teil von HTML. So alle Sie tun müssen, ist zu schreiben, JSF/EL-code entsprechend, dass es produziert gültigen HTML - /JS-code. In der Tat, mit EL-inline-bean-Eigenschaften in den generierten JavaScript-code wie in deinem Versuch ist einer der richtigen Wege.
Unter der Annahme, daß dies tatsächlich der real code, den Sie jedoch einige syntax-Fehler. Die
onClick
- Attribut ist ungültig. Es muss in Kleinbuchstaben geschrieben. Ansonsten JSF einfach nicht Rendern das Attribut überhaupt.JavaScript hat keine Ahnung von der starken Typisierung. Die
Boolean
geben Funktionsargument ist ungültig. Entfernen Sie es. Ansonsten wirst du eine schöne JS-syntax-Fehler (im browser die JS-Konsole).Hinweis, dass ich erwarte, dass Sie verstehen, dass dies läuft vor commandlink eigenen
action
worden ist, aufgerufen wird (Sie sollten nun verstanden haben; JSF generiert HTML; rechts-klicken Sie die Seite im browser und View Source sehen Sie es selbst). Aber Sie hat nicht die Abdeckung, die in Ihrer konkreten Frage (sogar noch mehr, hat man nicht beschreiben, das konkrete problem mit dem angegebenen code in die Frage an alle), so kann ich nicht geben, eine ausführliche Antwort.enquiry.noQuery
zu update 1. vor der Aufforderung, die Warnung an.Wie beantwortet, Sie haben nie die konkreten funktionalen Anforderungen klar in der Frage, so war ich nicht in der Lage zu beantworten, im detail. Aber was auch immer Sie wollen, ist definitiv möglich.
Danke für den Kommentar, ich will eine andere Frage, da ich nicht wollen, verschmutzen die Frage mit der erweiterten Antwort.
InformationsquelleAutor BalusC
Könnten Sie versuchen, den Ansatz von hier
und speichern Sie Ihre bean-Feld in:
dann rufen Sie Ihre Methode mit dem Wert dieses Feldes.
InformationsquelleAutor AndaP