Wicket在标签上添加其他id



我是wicket的新手,我想在标签中添加一个属性(命名为other-id(。代码如下:

private String getName(ExampleList list) {
return getBrandName() + " " + getString("ExampleList." + list.name());
}  
IModel<List<ExampleList>> listModel = new AbstractReadOnlyModel<List<ExampleList>>() {
@Override
public List<ExampleList> getObject() {
return availableTechnologies.getObject().keySet().stream().collect(Collectors.toList());
}
};

ListView<ExampleList> example = new ListView<ExampleList>("list", listModel) {
@Override
protected void populateItem(ListItem<ExampleList> el) {
el.add(new Radio<ExampleList>("radio", item.getModel()));
el.add(new Label("labelName", getName(el.getModelObject())));               
}
};

这是相应的html:

<li wicket:id="list" class="radio">
<input wicket:id="radio" type="radio" name="radioChoice"/>
<label wicket:for="radio"><wicket:container wicket:id="labelName" /></label>
</li>

我想将其他id添加到标签中,并将标签名称添加到其他id中。直到现在我还试过

el.add(new Label("labelName", getName(el.getModelObject())).add(new AttributeAppender("other-id", getName(el.getModel()))); 

但我的标签上什么也没出现。我还尝试了html:

<label wicket:for="radio" other-id= wicket:id="labelName">

但我最后一次尝试时出错了。你知道怎么做吗?

要在表单组件上设置标签,需要使用setLabel方法。在populateItem方法中,您可以执行以下操作:

Radio<ExampleList> radio = new Radio<>("radio", item.getModel())
radio.setLabel(Model.of(getName(el.getModelObject())));
el.add(radio);

为了实现这一点,您应该修改HTML以删除标签中的wicket:container

<li wicket:id="list" class="radio">
<input wicket:id="radio" type="radio" name="radioChoice"/>
<label wicket:for="radio"></label>
</li>

问题是将AttributeAppender添加到wicket:container中。该元素仅渲染其主体,即标签的文本,但标记本身不会渲染,因此其属性也不会渲染。

您可以将标记更改为:

<label wicket:for="radio" wicket:id="labelName"></label>

通过这种方式,AttributeAppender将向<label>元素添加新属性。

最新更新