JavaScript 函数在启动时加载并将参数传递给托管 Bean

标签 javascript jsf parameter-passing managed-bean

我想在启动时使用 window.onload 加载 JavaScript 函数,并且该函数会将其参数传递给托管 Bean。

没有命令按钮。

JS:

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

    document.getElementById("formId:x").value = x;
    document.getElementById("formId:y").value = y;
}

XHTML:

<h:form id="formId">
    <h:inputHidden id="x" value="#{bean.x}" />
    <h:inputHidden id="y" value="#{bean.y}" />
</h:form>

托管 Bean 是一个常规托管 Bean,具有 getter 和 setter。

如果不单击命令按钮,此代码将无法工作。

有没有办法用 JavaScript 加载参数并将其传递给 JSF?

最佳答案

您可以使用remoteCommand 来完成此操作。

<p:remoteCommand name="sendArgs" actionListener="#{mybean.rcvArgs()}" partialSubmit="true" process="@this"/>

并进行 JavaScript 调用

sendArgs([
            {name: 'xval', value: locationInfo.lng},
            {name: 'yval', value: locationInfo.lat}
        ]);

在 mybean 中,您必须从参数列表中获取参数

public void rcvArgs() {
    Map<String, String> pmap;
    pmap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

    String xval = pmap.get("xval");
    String yval = pmap.get("yval");

关于JavaScript 函数在启动时加载并将参数传递给托管 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157965/

相关文章:

javascript - 为我的 XMLHttpRequest 文件上传添加文件大小限制

jsf - 如何在 JSF 复合组件中传递 List<Note>?

c++ - 在指向(全局/持久)对象的指针超出范围后,对象(不是指针)的成员 vector 获取 'unset'

JavaScript:将参数传递给回调函数

javascript - 如何在 Intranet 应用程序中的 ASP.NET 3.5 中获取 Windows NT 记录的用户名

javascript - ES6 : fire React function

jsf - 监听来自 Autocomplete (Primefaces) 组件的 onSelect 事件

java - primefaces 效果不起作用

javascript - 调用 Servlet 并从 JavaScript 和参数调用 Java 代码

javascript - react 复选框显示不正确的值