Come passare le variabili JavaScript come parametri al metodo di azione JSF?

Sto preparando alcune variabili in JavaScript (nel mio caso specifico, mi piacerebbe ottenere la posizione GPS):

function getVars() { // ... var x = locationInfo.lng; var y = locationInfo.lat; } 

Mi piacerebbe inviarli al mio bean gestito tramite il pulsante di comando sottostante:

  
 public void submit(int x, int y) { // ... } 

Come posso inviare variabili y da JavaScript a metodo di azione bean gestito da JSF?

Lascia che JS li imposti come valori di input nascosti nella stessa forma.

      
 function getVars() { // ... var x = locationInfo.lng; var y = locationInfo.lat; document.getElementById("formId:x").value = x; document.getElementById("formId:y").value = y; } 

Il metodo di azione del pulsante di comando potrebbe semplicemente accedervi come proprietà del bean nel solito modo.

 private int x; private int y; public void submit() { System.out.println("x: " + x); System.out.println("y: " + y); // ... } // Getters+setters. 

Un’alternativa è usare OmniFaces o PrimeFaces invece di . Vedi anche ao Come richiamare un bean gestito JSF su un evento HTML DOM utilizzando JavaScript nativo?

Se utilizzi PrimeFaces , puoi utilizzare un campo di input nascosto collegato a un bean gestito e puoi inizializzarne il valore utilizzando javascript, per PrimeFaces, la funzione PF può essere utilizzata per accedere a una variabile widget collegata all’input nascosto, in questo modo :