问题描述
|
如果没有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 \”以便提交所有表单