I would rather filter my model instead of checking if / else in the view.
This abstract class is used here:
public abstract class FilteredListModel<K> extends LoadableDetachableModel<List<K>>{ private static final long serialVersionUID = 1L; private IModel<List<? extends K>> inner; @Override protected void onDetach(){ inner.detach(); } public FilteredListModel(IModel<List<? extends K>> inner){ this.inner = inner; } public FilteredListModel(List<? extends K> inner){ this.inner = Model.ofList(inner); } @Override protected final List<K> load(){ List<? extends K> input = inner.getObject(); List<K> result = new ArrayList<K>(input.size()); for(K k : input){ if(accept(k))result.add(k); } return result; } protected abstract boolean accept(K k); }
Now include your list model in it:
ListView<String> view = new ListView<String>( "quickLinks", new FilteredListModel<String>(quickLinks){ protected boolean accept(String value){ return yourCheckHere(); } }) { @Override protected void populateItem( ListItem<String> item ){
source share