Moim celem jest uzyskanie szerokości ekranu, wysokości itp. W komponencie bean sesji w JSF. Zgodnie z przykładami, które znalazłem, sposobem na to jest dodanie parametru do commandButton z wartością, która jest javascript. Wartość jest następnie przenoszona do zmiennej assignTo bean. Atrybut noEscape ma sprawić, że wartość zostanie przekazana zamiast nazwy zmiennej.Przekazywanie wartości JavaScript do Bean z a4j: param
To prawie działa. Co się dzieje, to literalna nazwa zmiennej, np. "screen.height" pojawia się w fasoli zamiast numeru, np. 600. Próbowałem go zmienić, aby wywoływał funkcję skryptu, ale to nie pomogło. (Uwaga, umieściłem parametry wewnątrz polecenia commandButton, ponieważ przykłady pokazały to w ten sposób, a ten przycisk jest dogodnym miejscem i jest tak potrzebny w przypadku aplikacji).
Mam następujący kod
<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>
gdzie
<script>
function getWidth() {
return screen.width;
}
</script>
Ponownie, specyficzny problem jest to, że jestem coraz nazwy zmiennych do fasoli, a nie wartości zmiennych. Każda pomoc byłaby bardzo cenna.
Dzięki. To naprawia mój problem. Nie jestem do końca pewien, jak ominąłem partię h vs a4j. – wjr
@ user2418375 Cieszę się, że pomogło, nie zapomnij oznaczyć jako zaakceptowany! –