阻止Wicket为容器元素生成HTML



我遇到了一个问题,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)。

最新更新