为什么Wicket会更改html元素的id?

Mon*_*bal 9 html wicket identifier

如果我写

<form wicket:id="form" id="form>
Run Code Online (Sandbox Code Playgroud)

甚至

<form wicket:id="form>...
Run Code Online (Sandbox Code Playgroud)

然后,呈现的HTML显示每当刷新页面时附加不同数字的id"形式",例如

   <form id="form7"....
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用Wicket框架的这种行为?

Mic*_*ard 18

我们在项目中广泛设置了标记ID,以便使用Selenium测试框架简化自动测试.绝对有效.

Component.setOutputMarkupId(true); // write id attribute of element to html
Component.setMarkupId("someid"); // id attribute of element is "someid"
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 6

在大多数情况下,这是您在使用wicket时所需的行为.动态id用于在将Ajax行为添加到组件或添加到ajax响应以进行刷新时防止id冲突.对于上述任何一种情况,您确实需要客户端响应和服务器端状态.如果有外部js资源你需要用于dom查找的组件的id,那么我建议添加一个自定义wicket组件行为,然后生成对传入生成的id的函数的js调用.

我意识到我要描述的内容会让你更多地进入Wicket森林.但是我对Wicket为您开箱即用的蠢事感到非常满意.