如何将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发送x
和y
variables到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?