阻止Wicket为容器元素生成HTML?

jsz*_*ila 3 html wicket

我遇到了Wicket为编程需要存在的元素生成标记的问题,但不是结构上的问题.它并没有弄乱任何东西,但我希望尽可能保持页面整洁.应该注意的是,我是一名前端开发人员,所以如果可能的话,我想把手放在java文件之外.

假设我有以下HTML,它是组件模板的一部分:

<ul class="configList" wicket:id="rows">
    <li wicket:id="cols">
        <div wicket:id="checkBoxThing"></div>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这是checkBoxThing的模板:

<wicket:panel>
    <div wicket:id="checkboxContainer">
        <label wicket:id="label"></label>
        <input  type="checkbox" wicket:id="checkbox" name="check" />
    </div>
</wicket:panel>
Run Code Online (Sandbox Code Playgroud)

查看页面时,生成的标记如下所示:

<ul class="configList>
    <li>
        <div>
          <div id="RandomWicketID">
             <label>Checkbox Label</label>
             <input type="checkbox" />
          </div>
        </div>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

LI中的那两个DIV在结构上没有做任何事情或者用于客户端脚本; 他们只是占用空间.我可以在模板中做些什么告诉Wicket不要渲染它们吗?我似乎无法找到任何我可以通过的参数来实现这一点,办公室里没有人似乎知道.

提前致谢!

小智 14

使用<wicket:container>标记.

注意:如果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>
Run Code Online (Sandbox Code Playgroud)

checkBoxThing:

<wicket:panel>
    <wicket:container wicket:id="checkboxContainer">
        <label>Checkbox Label</label>
        <input type="checkbox" />
    </wicket:container>
</wicket:panel>
Run Code Online (Sandbox Code Playgroud)

结果(在部署模式下):

<ul class="configList>
    <li>
        <label>Checkbox Label</label>
        <input id="foo" type="checkbox" />
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)