当我查看Wicket模态窗口的HTML时,我看到一个表单。它为什么存在?
答案 0 :(得分:2)
ModalWindow的JavaScript生成<form>
以支持以下用例:
+ Page
+ Form("f")
+ TextField("a")
+ ModalWindow("m")
+ Form("f2")
+ TextField("b")
在浏览器中渲染时,嵌套表单“f2”呈现为<div>
- 这是Wicket为您所做的事情,因为嵌套表单不是有效的HTML。
当打开时,ModalWindow会删除其包含的标记并将其放入添加到文档正文中的<div>
:
<form wicket:id="f">
<input wicket:id="a" />
<div wicket:id="m">
<!-- markup removed -->
</div>
</form>
<div>
<form> <!-- generated form -->
<div wicket:id="f2">
<input wicket:id="b" />
</div>
</form>
</div>
如果没有生成的表单,则无法通过Ajax提交模态窗口中的输入。
请注意,这有一个顽皮的暗示: 即使你只想在模态窗口中使用一个表单,你仍然必须有一个包装模态窗口的表单。
没有它:
+ Page
# wrong - no wrapping form
+ ModalWindow("m")
+ Form("f2")
+ TextField("b")
...“f2”将保持<form>
,结果将使两个嵌套表单的HTML无效:
<div wicket:id="m">
<!-- markup removed -->
</div>
<div>
<form> <!-- generated form -->
<form wicket:id="f2">
<input wicket:id="b" />
</form>
</form>
</div>