如果没有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"以提交所有表单