获取组件标记的属性值

时间:2014-10-31 10:41:01

标签: java attributes tags wicket

在wicket中,我需要获取组件标记标记的值,例如:

<a href="#" name="#">...</a>

在这里,我需要Wicket java类中name属性的值,例如:

String name = /*{link's tag name}*/;

我需要将name的值指定为代码name的{​​{1}}属性。

1 个答案:

答案 0 :(得分:4)

正如我从你的问题中意识到的那样,你需要在音速上获取/设置你的wicket组件的标签参数。

所以,你有几个选择:

  1. 使用AttributeModifier静态方法,例如#append("class", "appendedClass")#replace("name", "#"),其中第一个参数是标记的属性,其次是&#39; s值)设置您想要标记的任何值,但请注意,您无法通过此方法获取标记的当前值。另外,注意不要在&#34;渲染&#34;中添加此修饰符。方法(例如#onConfigure()),不要在浏览器中的每个页面或组件刷新中创建修饰符重复。

  2. 像这样覆盖#onComponentTag()方法。

  3.     ...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
            }
        }        
    
    1. 使用与上述相同的方法,但使Behavior onComponentTag方法不要覆盖组件的方法。
    2. 阅读this以获取更多信息,但请注意,这是一篇相当古老的文章,对于较新的Wicket版本而言可能会有所不同。 (例如,当移动到AttributeModifier类方法时,已经不需要使用AttributeAppender。)

      此外,您还可以看到thisthis示例。谷歌中有很多这样的人。