Mein Ziel ist es, die Bildschirmbreite, Höhe usw. in eine Session-Bean in JSF zu bekommen. Nach den Beispielen, die ich gefunden habe, ist die Art, dies zu tun, ein Parameter zu einem Befehlsschaltfläche mit einem Wert, der Javascript ist hinzuzufügen. Der Wert wird dann an die Bean-Variable assignTo übergeben. Das noEscape-Attribut soll bewirken, dass der Wert anstelle des Variablennamens übergeben wird.Übergeben von JavaScript-Werten an Bean mit a4j: param
Das funktioniert fast. Was passiert, ist, dass der Name der Literalvariablen, z. "Screen.Height" endet in der Bean anstelle einer Zahl, z. 600. Ich habe versucht, es so zu ändern, dass es eine Skriptfunktion aufruft, aber das hat nicht geholfen. (Beachten Sie, dass ich die Parameter in eine Befehlsschaltfläche einfüge, da die Beispiele es auf diese Weise zeigten und diese Schaltfläche ein praktischer Ort ist und für die App sowieso benötigt wird).
Ich habe den folgenden Code
<h:commandButton value="Log In" action="#{loginBean.login}" styleClass="buttons">
<a4j:param name="w" value="getWidth()" assignTo="#{browser.screenWidth}" noEscape="true" />
<a4j:param name="h" value="screen.height" assignTo="#{browser.screenHeight}" noEscape="true" />
<a4j:param name="a" value="navigator.userAgent" assignTo="#{browser.userAgent}" noEscape="true" />
</h:commandButton>
wo
<script>
function getWidth() {
return screen.width;
}
</script>
Auch das spezifische Problem ist, dass ich die Variablennamen in die Bohne ich immer, nicht die Variablenwerte. Jede Hilfe würde sehr geschätzt werden.
Danke. Das behebt mein Problem. Nicht ganz sicher, wie ich den h vs a4j Teil verpasst habe. – wjr
@ user2418375 Froh, dass es geholfen hat, vergessen Sie nicht, als akzeptiert zu markieren! –