一尘不染

如何将JavaScript变量作为参数传递给JSF操作方法?

javascript

我正在用JavaScript准备一些变量(在我的特定情况下,我想获取GPS位置):

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

我想通过下面的命令按钮将它们发送到我的托管bean:

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



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

如何将JavaScript中的变量xy变量发送到JSF托管bean操作方法?


阅读 240

收藏
2020-05-01

共1个答案

一尘不染

让JS以相同的形式将它们设置为隐藏的输入值。

<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;
}

命令按钮操作方法可以按通常方式将它们作为bean属性进行访问。

private int x;
private int y;

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

// Getters+setters.
2020-05-01