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

标签 javascript jsf parameter-passing managed-bean

我正在用 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) {
    // ...
}

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

最佳答案

让 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.

另一种方法是使用 OmniFaces <o:commandScript> PrimeFaces <p:remoteCommand> 而不是 <h:commandButton> .另见 a.o. How to invoke a JSF managed bean on a HTML DOM event using native JavaScript?

关于javascript - 如何将 JavaScript 变量作为参数传递给 JSF 操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28591301/

相关文章:

jsf - h :inputText changing to scientific notation

python - 我可以使用变量的值作为函数的参数名称吗?

javascript - 从 MySQL 数据库获取数据并添加到列表(NodeJS)

javascript - 在浏览器地址栏中显示内容输入?

javascript - 从谷歌地图 drawingManager V3 中删除多边形

jsf - 从服务器下载文件并以zip格式压缩

带有 JSF 和 Primefaces 的 CSS - styleClass 不改变字体大小

java - 请解释这个 Java 数组引用参数传递行为

javascript - 如何在没有对象的情况下将对象方法作为参数传递

javascript - 将项目升级到最新版本的 Cordova 4.0.0 时,控制台出现 TypeError "Cannot set property connection of#<Navigator>"