如果我写
<form wicket:id="form" id="form>
甚至
<form wicket:id="form>...
然后,每当刷新页面时,呈现的 HTML 都会显示附加有不同数字的 id 'form',例如
<form id="form7"....
有没有办法禁用 Wicket 框架的这种行为?
如果我写
<form wicket:id="form" id="form>
甚至
<form wicket:id="form>...
然后,每当刷新页面时,呈现的 HTML 都会显示附加有不同数字的 id 'form',例如
<form id="form7"....
有没有办法禁用 Wicket 框架的这种行为?
我们在项目中广泛手动设置标记 ID,以简化使用 Selenium 测试框架的自动测试。它绝对有效。
Component.setOutputMarkupId(true); // write id attribute of element to html
Component.setMarkupId("someid"); // id attribute of element is "someid"
在大多数情况下,这是您在使用 wicket 时想要的行为。动态 id 旨在防止在将 Ajax 行为添加到组件或添加到 ajax 响应以进行刷新时发生 id 冲突。对于这些情况中的任何一种,您确实需要客户端响应和服务器端状态共同参与。如果有外部 js 资源,您需要组件的 id 来进行 dom 查找,那么我建议添加一个自定义 wicket 组件行为,然后生成对传入生成的 id 的函数的 js 调用。
我意识到我将要描述的内容会引导你更多地进入 Wicket 的森林。但我对 Wicket 为您开箱即用的 ajaxy 内容感到非常满意。
这是 Wicket 设计功能。您可以使用类来链接样式和组件。
<form wicket:id="form" id="form>
您也可以尝试(我从未做过)setMarkupId。我不确定这是个好方法。
自从我使用 Wicket 已经有一段时间了,但我记得当 wicket 使用 ajax 元素时,它id
的 s 是自动生成的(id
标签的,而不是wicket:id
)。您可以在不使用和 ajax 元素时控制标签的 id。在您的情况下,由于没有代码,我猜您将不得不更改任何表单AjaxButton
或Ajax*
表单。
是的,您可以编写自定义 JavaScript……您只需要根据“Wicket 方式”来实现它。您可以使用自定义 JavaScript 装饰组件、Ajax 调用等,然后一切都很好。