私にはListView
があります。どのボタンがWicketでアクティブになっているか確認してください
@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)
}
このようなHTML
を生成します:
<a>Test 1</a>
<a>Test 2</a>
私のアプリケーションのために、私はアクティブになっているlinks
を追跡する必要がありますこれはpopulateItem
方法 - です。 だから私の最初の思想はIndicatingAjaxFallbackLink
自分をimplemetingた、このような何か:
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...
}
しかし、今の問題は、私は両方のlinks
をクリックした場合、両方がアクティブに設定されるということです。 もう1つのアプローチは、AttributeModifier
を使用することでしたが、リンクがCSSによってアクティブであることだけを宣言できるので、もう一度失敗しました。 私は何を達成したいですか?これらのlinks
は、多数の画像を読み込む別のパネルを更新します。最初のlink
は常にアクティブなので、イメージはデフォルトで読み込まれます。 2番目のリンクをクリックすると、2番目のリンクがアクティブになり、異なるイメージの読み込みが開始されます。
しかし、populateItem
を超えるリンクが作成されたときに、link
がアクティブである状態を保持するにはどうすればよいですか?私はあなたがリンクごとに同じモデルのインスタンスを使用する必要があり、この作業をするために言ったように
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());
}
: