Wicket 检查导叶中哪个按钮处于活动状态

Wicket 检查导叶中哪个按钮处于活动状态,wicket,wicket-6,wicket-7,Wicket,Wicket 6,Wicket 7,我有一个列表视图。这是populateItem-方法: @Override protected void populateItem(ListItem<Test> test) { // TODO Auto-generated method stub Test t = test.getModelObject(); IndicatingAjaxFallbackLink link = new IndicatingAjaxFallbackLink("categoryMe

我有一个
列表视图
。这是
populateItem
-方法:

@Override
protected void populateItem(ListItem<Test> test) {
    // TODO Auto-generated method stub
    Test t = test.getModelObject();
    IndicatingAjaxFallbackLink link = new IndicatingAjaxFallbackLink("categoryMenuItemLink", t)
    test.add(link)
}
对于我的应用程序,我需要跟踪哪个
链接处于活动状态。
因此,我的第一个想法是实现我自己的
指示符gajaxfallbacklink
,如下所示:

<a>Test 1</a>
<a>Test 2</a>
public class MyLink extends IndicatingAjaxFallbackLink<String> {

private boolean isActive;

public CategoryAjaxLink(String id) {
    super(id);
    this.setOutputMarkupPlaceholderTag(true);

}

@Override
public void onClick(AjaxRequestTarget target) {
    this.isActive = true;
    // Load images into different panel...
}
public类MyLink扩展了IndicatingAjaxFallbackLink{
私有布尔非活动;
公共类别链接(字符串id){
超级(id);
此.setOutputMarkupPlaceholderTag(true);
}
@凌驾
公共void onClick(AjaxRequestTarget目标){
this.isActive=true;
//将图像加载到不同的面板。。。
}
但现在的问题是,如果我同时单击这两个
链接,那么这两个链接都将被设置为活动。
另一种方法是使用
AttributeModifier
,但再次失败,因为我只能声明链接是由CSS激活的。 我想完成什么?这些
链接将更新另一个加载大量图像的面板。第一个
链接始终处于活动状态,因此默认情况下将加载图像。通过单击第二个
链接,第二个链接将变为活动状态,并开始加载不同的图像


但是,当通过
populateItem
创建链接时,如何保持链接处于活动状态或未处于活动状态?

您可以创建一个自定义链接类,该类使用公共模型实例跟踪活动链接:

public class MyLink extends IndicatingAjaxFallbackLink<String>
private final IModel<String> activeLink;    

public CategoryAjaxLink(String id, IModel<String> activeLink) {
    super(id);
    this.setOutputMarkupPlaceholderTag(true);
    this.activeLink = activeLink;
}

@Override
public void onClick(AjaxRequestTarget target) {
    activeLink.setObject(getId());
    // Load images into different panel...
}

public boolean isActive() {
    return getId().equals(activeLink.getObject());
}
public类MyLink扩展了IndicatingAjaxFallbackLink
私有最终IModel activeLink;
公共类别JAXLink(字符串id,IModel activeLink){
超级(id);
此.setOutputMarkupPlaceholderTag(true);
this.activeLink=activeLink;
}
@凌驾
公共void onClick(AjaxRequestTarget目标){
setObject(getId());
//将图像加载到不同的面板。。。
}
公共布尔isActive(){
返回getId().equals(activeLink.getObject());
}

正如我所说,要实现这一点,您必须为每个链接使用相同的模型实例。

您可以创建一个自定义链接类,该类使用公共模型实例来跟踪活动链接:

public class MyLink extends IndicatingAjaxFallbackLink<String>
private final IModel<String> activeLink;    

public CategoryAjaxLink(String id, IModel<String> activeLink) {
    super(id);
    this.setOutputMarkupPlaceholderTag(true);
    this.activeLink = activeLink;
}

@Override
public void onClick(AjaxRequestTarget target) {
    activeLink.setObject(getId());
    // Load images into different panel...
}

public boolean isActive() {
    return getId().equals(activeLink.getObject());
}
public类MyLink扩展了IndicatingAjaxFallbackLink
私有最终IModel activeLink;
公共类别JAXLink(字符串id,IModel activeLink){
超级(id);
此.setOutputMarkupPlaceholderTag(true);
this.activeLink=activeLink;
}
@凌驾
公共void onClick(AjaxRequestTarget目标){
setObject(getId());
//将图像加载到不同的面板。。。
}
公共布尔isActive(){
返回getId().equals(activeLink.getObject());
}
正如我所说的,要实现这一点,您必须为每个链接使用相同的模型实例