如何在JSF中使用javascript函数提交表单,不带表单名称或id

How to submit a form using a javascript function in JSF w/ Richfaces, w/o the form name or id?

本文关键字:表单 id 提交 函数 JSF javascript      更新时间:2023-09-26

如果没有javascript中的表单名称或id,我该如何在Richfaces中提交表单?我想我可能可以使用jsFunction标记,但我一直没能弄清楚。

注意,我可以在jsFunction中设置函数的名称

编辑RF 3.3、JSF 1.2

如果不重复表单ID,并且不知道表单在HTML DOM树中的确切位置,而不是要提交表单的元素,这是不可能的。

您最多可以使用EL函数rich:element()。想象一下,你有一个这样的表格:

<h:form id="myform">

然后,您可以在JS上下文中(在JSF页面中!)使用如下rich:element()来获得HTML DOM元素形式的表单:

<script>
    var form = #{rich:element('myform')};
    form.submit();
</script>

这就是生成如下的HTML

<script>
    var form = document.getElementById('myformOrWhateverClientIdItHas');
    form.submit();
</script>

另请参阅:

  • RichFaces内置客户端功能

Update:或者,当JS函数被表单内部的元素调用时,只需使用this.form即可获得所讨论的HTMLDOM元素的父表单元素。例如

<h:selectBooleanCheckbox onclick="doSomething(this.form)" />

带有

function doSomething(form) {
    // ...
    form.submit();
}

使用a4j:jsFunction提交时不需要表单名称或id。

如果您想使用a4j:jsFunction,请不要忘记添加execute="@form"以提交所有表单