如何将JavaScriptvariables作为parameter passing给JSF操作方法?

我正在准备一些JavaScript的variables(在我的具体情况,我想获得GPS位置):

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

我想通过下面的命令button将它们发送给我的托pipebean:

 <h:commandButton value="submit" onclick="getVars()" action="#{bean.submit(x,y)}" /> 
 public void submit(int x, int y) { // ... } 

我怎样才能从JavaScript发送xyvariables到JSF托pipebean的操作方法?

让JS把它们设置为隐藏的input值。

 <h:form id="formId"> <h:inputHidden id="x" value="#{bean.x}" /> <h:inputHidden id="y" value="#{bean.y}" /> <h:commandButton value="submit" onclick="getVars()" action="#{bean.submit}" /> </h:form> 
 function getVars() { // ... var x = locationInfo.lng; var y = locationInfo.lat; document.getElementById("formId:x").value = x; document.getElementById("formId:y").value = y; } 

命令button操作方法可以像通常的方式一样将它们作为bean属性访问。

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

另一种方法是使用OmniFaces <o:commandScript>或PrimeFaces <p:remoteCommand>而不是<h:commandButton> 。 另请参阅ao 如何使用本地JavaScript在HTML DOM事件上调用JSF托pipebean?