如何在带有Richfaces的JSF中使用JavaScript函数提交表单,而没有表单名称或ID?

问题描述

| 如果没有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内置客户端功能 更新:或者,当JS函数由表单自身内部的元素调用时,只需使用ѭ5来获取相关HTML DOM元素的父表单元素。例如。
<h:selectBooleanCheckbox onclick=\"doSomething(this.form)\" />
function doSomething(form) {
    // ...
    form.submit();
}
    ,您不需要使用a4j:jsFunction提交的表单名称或ID。     ,如果要使用a4j:jsFunction,请不要忘记添加execute = \“ @ form \”以便提交所有表单