在检票口中,我需要获取组件的标记标签的值,例如:
<a href="#" name="#">...</a>
在这里,我需要Wicket java类中
name
属性的值,例如:String name = /*{link's tag name}*/;
我需要将
name
的值分配为标记name
的<a>
属性。 最佳答案
正如我从您的问题中意识到的那样,您需要动态获取/设置检票口组件的标签参数。
因此,您有几种选择可以执行此操作:
AttributeModifier
静态方法(例如#append("class", "appendedClass")
或#replace("name", "#")
)(其中第一个参数是标签的属性,第二个是标签的值)来设置要标签的任何值,但是请注意,使用这种方法无法获取标签的当前值。另外,请注意不要在“渲染”方法(例如#onConfigure()
)中添加此修饰符,也不要在浏览器的每个页面或组件的刷新中创建重复的修饰符。 #onComponentTag()
方法。 ...new Link ( "link" ) {
@Override
protected void onComponentTag ( final ComponentTag tag )
{
super.onComponentTag ( tag ); // you should always call super.
tag.getName (); // get name of the tag: a/div/span..
tag.setName ( "span" ); // set tag's name.
tag.getAttribute ( "name" ); // get 'name' attribute's value.
tag.put ( "name", "#" ); // set 'name' attribute's value
}
}
Behavior
的onComponentTag
方法不要覆盖组件的方法。 阅读this以获取更多信息,但是请注意,这是一篇相当老的文章,并且对于较新的Wicket版本可能有所不同。 (例如,由于已经移至AttributeModifier类方法,因此已经无需使用
AttributeAppender
)。另外,您可以看到this或this示例。谷歌中有很多。