我正在使用jsf 1.2。当一个特定的jsp有多个具有指定id的表单时,例如当使用类似下面的内容时,jsf会给表单一个看似随机的id。
<ui:repeat>
<h:form id="repeatingform">
...
我想使用javascript提交所有表单。有没有办法在不知道表格的ID的情况下做到这一点?
答案 0 :(得分:5)
一次提交多个表单实际上是不可能的。问题是每个表单都需要自己单独的请求 - 提交表单基本上类似于单击链接,并且您无法一次打开页面上的所有链接(您可以通过在新选项卡/窗口中打开它们,但那是另一件事)
如果您确实希望将每个表单保持为单独的表单元素,则可以使用Aquatic的示例,
var forms = document.getElementsByTagName("FORM");
for (var i=0; i<forms.length; i++)
forms[i].submit();
但将代码运行submit()
替换为使用XMLHttpRequest提交表单的代码。您可以在后台运行多个XMLHttpRequests。
答案 1 :(得分:3)
答案 2 :(得分:0)
您可以通过下一种方式访问页面上的所有表单
var forms = document.getElementsByTagName("FORM");
for (var i=0; i<forms.length; i++)
forms[i].submit();
答案 3 :(得分:0)
我认为这个问题有几个部分。 1.您是否尝试在JSF中提交多个表单?有一种方法可以以不同的形式分割组件,然后在需要时提交一组选定的组件。外部标签可以在这些内部,您可以拥有尽可能多的外部标签。 (请知道:子表单是tomahawk库;但它适用于JSF)。也可以使用t:commandButton在选择的组中提交子表单。 注意子表单deocumentation的最后一段,可以提交所有带有逗号分隔id的表单。所以例如 这里有一些输入控件
更多控件在这里
整个lotta控制在这里
这样的内容将允许您仅为要验证的表单提交选择性表单和验证组件。如果那是你真正想要做的事情。
但如果您的意图是通过单个java脚本提交这些表单我有一个小建议,javascript支持在dom树中动态查找表单标签,如上面的例子中aquatic所示。您可以通过实现在“RENDER_RESPONSE”阶段之前调用的PhaseListener来遍历这些ui元素,并遍历ComponentUITree以获取所有UI组件的名称或列表,然后通过scriplet变量或$ 2变量将它们提供给javascript支持。
如果您可以准确地列出您的问题,我可以提供更详细的答案或示例,为什么您想要一个通用的Java脚本,并且您打算并行提交多个表单,或者您打算一次提交一个(如并且当被要求时)但是通过一个共同的java脚本。
HTML表单组件的并行提交实际上是不可能的,除非你使用javascript从所有表单累积组件值,然后进行大量的手动操作。
详细说明您的实际意图。