2011-10-26 69 views
2

<a/>タグ内にコンポーネントがあり、クリックするとポップアップウィンドウが開きます。 KMLファイルで動作する「お気に入りに追加」リンクです。私のKMLファイルには「お気に入り[ブール値]」という名前のフィールドがあります。今すぐ "お気に入りに追加"リンクを非表示にしたいのですが、Wicketでコンポーネントを非表示にする

<div id="map_container"> 
    <a wicket:id="favourite_star" class="map_container_star"></a> 
</div> 

このISN」:

public class FavouriteStarIconState extends AbstractDefaultAjaxBehavior { 
    private boolean isFavourite; 

    public FavouriteStarIconState(boolean isFavourite) { 
     super(); 
     this.isFavourite = isFavourite; 
    } 

    @Override 
    protected void respond(AjaxRequestTarget target) { 
     if (isFavourite) { 
      target.appendJavascript("jQuery('.map_container_star').css(
       {'display' : 'none' });"); 
     } else { 
      target.appendJavascript("jQuery('.map_container_star').css(
       {'display' : 'block' });"); 
     } 
    } 

    @Override 
    public void renderHead(IHeaderResponse response) { 
     response.renderOnLoadJavascript(getCallbackScript().toString()); 
    } 
} 

成分を含むHTMLの一部:私はこのように動作を追加しようとした

public class CustomTracksAjaxDataTable<T> extends CustomAjaxDataTable<T> { 
    public CustomTracksAjaxDataTable(String id, List<IColumn<T>> iColumns, 
     ISortableDataProvider<T> tiSortableDataProvider, int rowsPerPage) { 
     super(id, iColumns, tiSortableDataProvider, rowsPerPage); 
    } 

    protected void onEventHandler(AjaxRequestTarget ajaxRequestTarget, 
     KMLFile file) { 
     setKMLData(file); // it just update map, dont care about it 
     add(new FavouriteStarIconState(file.isSaved())); 
    } 
} 

:KMLリストはテーブルで生成されます働いている。私はcomponent.setVisible(false)と同じ結果を得ました。どのように私は仕事に隠れることができますか?

+1

今素晴らしい作品あなたはComponent' 'の'のisVisible() 'メソッドで見たことがありますか?あなたはそれをオーバーライドすることができ、Wicketは残りの部分を処理します。コンポーネントを 'AjaxRequestTarget'に追加するだけです。この解決策には限界がありますが、通常は機能します。 – biziclop

答えて

1

それは私がひどい間違いを犯し、JavaScriptが間違った場所に追加されていることがわかりました。 AJAXリクエストはレンダリングされませんでした。適切なクラスは、CustomTracksAjaxDataTableクラスによって拡張されたCustomAjaxDataTableでした。私はちょうど

new AjaxEventBehavior("onclick") 

を追加し、

protected void onEvent(AjaxRequestTarget ajaxRequestTarget) 

をオーバーライドして、それが

0

は、あなたが要素

component.add(new AttributeModifier("class", "hiddenClass")); 

にクラスを追加したり、スタイル属性

に直接スタイルを追加 AttributeModifierで、この

.hiddenClass 
{ 
    visibility:hidden; 
} 

のようなCSSクラスを使用することができます

component.add(new AttributeModifier("style", "visibility:hidden;")); 
+0

コンストラクタAttributeModifier(String、String)が未定義です。たぶん私はWicketの別のバージョンを使用しています。 –

+0

である可能性があります、answereは4歳です – osdamv

関連する問題