我遇到了一个问题,Wicket为编程上需要但结构上不需要的元素生成标记。它没有把任何东西弄乱,但我喜欢尽可能保持页面整洁。需要注意的是,我是一名前端开发人员,所以如果可能的话,我希望不要接触java文件。
假设我有以下HTML,它是组件模板的一部分:
<ul class="configList" wicket:id="rows">
<li wicket:id="cols">
<div wicket:id="checkBoxThing"></div>
</li>
</ul>
这是checkBoxThing:的模板
<wicket:panel>
<div wicket:id="checkboxContainer">
<label wicket:id="label"></label>
<input type="checkbox" wicket:id="checkbox" name="check" />
</div>
</wicket:panel>
查看页面时,生成的标记如下所示:
<ul class="configList>
<li>
<div>
<div id="RandomWicketID">
<label>Checkbox Label</label>
<input type="checkbox" />
</div>
</div>
</li>
</ul>
LI中的这两个DIV在结构上没有任何作用,也没有用于客户端脚本;它们只是在占用空间。我可以在模板中做些什么来告诉Wicket不要渲染它们吗?我似乎找不到任何可以通过的参数来实现这一点,办公室里似乎也没有人知道。
提前感谢!
使用<wicket:容器>标签。
注意:如果Wicket的配置模式设置为开发(默认的IIRC),则Wicket属性&标记将仍然存在于标记中。如果您将其更改为部署,Wicket将从输出中删除它们(请参阅https://cwiki.apache.org/WICKET/how-to-remove-wicket-markup-from-output.html)。
configList:
<ul class="configList" wicket:id="rows">
<li wicket:id="cols">
<wicket:container wicket:id="checkBoxThing" />
</li>
</ul>
checkBoxThing:
<wicket:panel>
<wicket:container wicket:id="checkboxContainer">
<label>Checkbox Label</label>
<input type="checkbox" />
</wicket:container>
</wicket:panel>
结果(在部署模式下):
<ul class="configList>
<li>
<label>Checkbox Label</label>
<input id="foo" type="checkbox" />
</li>
</ul>
使用<wicket:container>
,例如
<ul class="configList" wicket:id="rows">
<li wicket:id="cols">
<wicket:container wicket:id="checkBoxThing"></wicket:container>
</li>
</ul>
一般情况下,请参见https://cwiki.apache.org/WICKET/wickets-xhtml-tags.html
还有一个选项是Component#setRenderBodyOnly(true)。