您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用本机JavaScript在HTML DOM事件上调用JSF管理的bean?

如何使用本机JavaScript在HTML DOM事件上调用JSF管理的bean?

几种方法

<h:form>
<h:commandScript name="commandName" action="#{bean.action}" render=":results" />

您可以在JS中调用它,如下所示:

    commandName();

可以按以下方式传递参数:

    commandName({ name1: "value1", name2: "value2" });

并获得如下:

    String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2

要在load事件期间调用它,请设置autorun="true"

    <h:commandScript ... autorun="true" />
<h:form>
<p:remoteCommand name="commandName" action="#{bean.action}" update=":results" />

您可以在JS中调用它,如下所示:

    commandName();

但是,它不使用JSF本[jsf.ajax.request(),而是使用PrimeFaces本机jQuery(您知道,PrimeFaces是jQuery / UI之上的JSF组件库)。

可以按以下方式传递参数:

    commandName([{ name: "name1", value: "value1" }, { name: "name2", value: "value2" }]);

并获得如下:

    String name1 = externalContext.getRequestParameterMap().get("name1"); // value1
String name2 = externalContext.getRequestParameterMap().get("name2"); // value2

要在load事件期间调用它,请设置autoRun="true"

    <p:remoteCommand ... autoRun="true" />

在第一个示例中只需替换h:o:。历史记录:<h:commandScript>完全基于<o:commandScript>

<h:form id="form" style="display:none;">
<h:commandButton id="button" action="#{bean.action}">
    <f:ajax render=":results" />
</h:commandButton>

您可以在JS中调用它,如下所示:

    document.getElementById("form:button").onclick();

请注意触发的重要性,onclick()而不是click()在情况下<h:commandButton>。该onclick()立即调用onclick功能,而click()只是触发因素,这是不支持IE的“click”事件。如果您使用<h:commandLink>,则可以放心使用click()

您可以通过<h:inputHidden>与JS预先填写的表格相同的形式来传递参数。这在如何将JavaScript变量作为参数传递给JSF操作方法中得到了证明。

要在load事件期间调用它,请考虑将其放在中<h:outputScript target="body">。该target="body"自动<script>在端部<body>,因此$(document).ready()包装是不必要的。

    <h:outputScript target="body">
    document.getElementById("form:button").onclick();
</h:outputScript>
javascript 2022/1/1 18:17:42 有458人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶