在检票口中,我需要获取组件的标记标签的值,例如:

<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
            }
        }
    
  • 使用与上述相同的方法,但是通过BehavioronComponentTag方法不要覆盖组件的方法。

  • 阅读this以获取更多信息,但是请注意,这是一篇相当老的文章,并且对于较新的Wicket版本可能有所不同。 (例如,由于已经移至AttributeModifier类方法,因此已经无需使用AttributeAppender)。

    另外,您可以看到thisthis示例。谷歌中有很多。

    09-13 05:56
    查看更多