您好, 我想知道是否有可能更改wicket输出html代码。例如对于组件“CheckBoxMultipleChoice”,您将获得以下html输出。
<span wicket:id="letters">
<input name="letters" type="checkbox" value="0" id="letters_0"/><label for="letters_0">fff</label><br/>
<input name="letters" type="checkbox" value="1" id="letters_1"/><label for="letters_1">aaa</label><br/>
<input name="letters" type="checkbox" value="2" id="letters_2"/><label for="letters_2">bbb</label><br/>
<input name="letters" type="checkbox" value="3" id="letters_3"/><label for="letters_3">ccc</label><br/>
<input name="letters" type="checkbox" value="4" id="letters_4"/><label for="letters_4">ddd</label><br/>
</span>
如果我不想要<br/>
标签,我该怎么办?
问候
答案 0 :(得分:5)
这取决于组件。
对于基于Panel
的任何内容,您始终可以对组件(MyPanel.java
)进行子类化,并提供不同的标记文件(MyPanel.html
)。只要你有相同的wicket:id
s,它就可以正常工作。
对于内置的Wicket组件,其源代码中嵌入了标记元素,如CheckBoxMultipleChoice
,您将受组件的自定义API的支配。在您的情况下,您似乎想要CheckBoxMultipleChoice#setSuffix。
答案 1 :(得分:4)
不,摘自documentation
组件可能会更改其引用标记,替换标记的正文或在标记后插入标记。但组件无法从标记流中删除标记。这是一个重要的保证,因为图形设计师可能会在组件标签上设置影响视觉呈现的属性。
但是,如果要在组件之间添加/删除新的行间距,可以将组件的显示更改为阻止/内联
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
//block or inline
tag.put("style", "display:block");
}
或使用CSS类