See PagingNavigationLink, PagingNavigationIncrementLink and their use by the NavigationToolbar as well as their counter parts. You would have to create your own NavigationToolbar, call super() methods and replace the PagingNavigationLink with your own.
If you want to replace the headers then take a look at FallbackHeadersToolbar. That's how I customized them both. Here's some code for you to get you started :) public class MyAjaxPagingNavigationLink extends AjaxPagingNavigationLink { private static final long serialVersionUID = 1L; private boolean isForLastPageLink; private boolean hideLastPageLink; /** * Constructor. * * @param id * See Component * @param iPageable * The pageable component for this page link * @param pageNumber * The page number in the PageableListView that this link links to. Negative * pageNumbers are relative to the end of the list. * @see AjaxPagingNavigationLink */ public MyAjaxPagingNavigationLink(String id, IPageable iPageable, int pageNumber) { this(id, iPageable, pageNumber, false); } /** * Constructor. * * @param id * See Component * @param iPageable * The pageable component for this page link * @param pageNumber * The page number in the PageableListView that this link links to. Negative * pageNumbers are relative to the end of the list. * @param hideLastPageLink * Boolean flag set to true if the last page link is to be hidden * @see AjaxPagingNavigationLink */ public MyAjaxPagingNavigationLink(String id, IPageable iPageable, int pageNumber, boolean hideLastPageLink) { super(id, iPageable, pageNumber); this.hideLastPageLink = hideLastPageLink; isForLastPageLink = pageNumber == -1; } @Override public void onComponentTagBody(MarkupStream stream, ComponentTag openTag) { String src; if (isForLastPageLink && hideLastPageLink) { src = ""; } else { src = getImageSource(isForLastPageLink, pageable); } replaceComponentTagBody(stream, openTag, src); } public static String getImageSource(boolean forLastPageLink, IPageable iPageable) { String buttonLabel = new ResourceModel("button.label").getObject(); String src = null; if(forLastPageLink) { if((iPageable.getCurrentPage() == iPageable.getPageCount() - 1) || (iPageable.getPageCount() == 0)) { src = RequestCycle.get().getUrlRenderer().renderContextRelativeUrl("images/last_di sabled.gif"); } else { src = RequestCycle.get().getUrlRenderer().renderContextRelativeUrl("images/last.gi f"); } } else { if(iPageable.getCurrentPage() == 0) { src = RequestCycle.get().getUrlRenderer().renderContextRelativeUrl("images/first_d isabled.gif"); } else { src = RequestCycle.get().getUrlRenderer().renderContextRelativeUrl("images/first.g if"); } } return "<img src=\"" + src + "\" border=\"0\" alt=\"" + buttonLabel + "\">"; } } public class MyAjaxNavigationToolbar extends AjaxNavigationToolbar { private static final long serialVersionUID = 1L; protected boolean showNavigationLabel = true; public MyAjaxNavigationToolbar(DataTable<?, ?> table) { this(table, table.getColumns().size()); } public MyAjaxNavigationToolbar(DataTable<?, ?> table, int customColspan) { super(table); WebMarkupContainer span = (WebMarkupContainer)this.get("span"); span.add(new AttributeModifier("colspan", new Model<String>(String.valueOf(customColspan)))); } @Override protected PagingNavigator newPagingNavigator(String navigatorId, final DataTable<?, ?> table) { return new AjaxPagingNavigator(navigatorId, table) { private static final long serialVersionUID = 1L; @Override protected Link<?> newPagingNavigationIncrementLink(String id, IPageable pageable, int increment) { return new MyAjaxPagingNavigationIncrementLink(id, pageable, increment); } @Override protected Link<?> newPagingNavigationLink(String id, IPageable pageable, int pageNumber) { return new MyAjaxPagingNavigationLink(id, pageable, pageNumber) { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return !isShortenVersion(); } }; } @Override protected PagingNavigation newNavigation(String id, IPageable pageable, IPagingLabelProvider labelProvider) { return new AjaxPagingNavigation("navigation", pageable, labelProvider) { private static final long serialVersionUID = 1L; @Override protected Link<?> newPagingNavigationLink(String id, IPageable iPageable, long pageIndex) { return new AjaxPagingNavigationLink(id, iPageable, pageIndex); } @Override public boolean isVisible() { return !isShortenVersion(); } }; } @Override protected void onAjaxEvent(AjaxRequestTarget target) { updateComponents(target); target.add(table); if (target.getPage() instanceof ConsolePage) { target.add(((ConsolePage)target.getPage()).getFeedbackPanel()); } } @Override public boolean isVisible() { return table.getPageCount() > 1; } }; } @Override protected WebComponent newNavigatorLabel(String navigatorId, final DataTable<?, ?> table) { NavigatorLabel nLabel = new NavigatorLabel(navigatorId, table) { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return isShowNavigationLabel(); } }; if (isShortenVersion()) { nLabel.setDefaultModel( new StringResourceModel("ShortNavigatorLabel", this, new Model<NavigationToolbarLabelData>(new NavigationToolbarLabelData(table)), "${from} to ${to} of ${of}") ); } return nLabel; } /** * Override method in order to subscribe to Ajax pagination update events. */ protected void updateComponents(AjaxRequestTarget target) { } /** * Predicator for the visibility of the {@link NavigatorLabel}. * * @return The visibility state of the navigator label. */ public boolean isShowNavigationLabel() { return showNavigationLabel; } /** * Mutator for the navigation labels. * * @param showStrechComponent Boolean flag set to <code>true</code> if the * navigation labels are to be displayed. * @return A reference back to the same instance of this class object, * useful to chain calls. */ public MyAjaxNavigationToolbar setShowNavigationLabel(boolean showStrechComponent) { showNavigationLabel = showStrechComponent; return this; } /** * Controls the {@link NavigatorLabel}'s format that provides Showing x to y of z message given for a DataTable.<br> * The default of <code>false</code> would use the longer <code>Showing ${from} to ${to} of ${of}</code> format * while if overridden to return <code>true</code> then the shorter <code>${from} to ${to} of ${of}</code> format * will be used * * @return <code>false</code> by default to show the long format. */ public boolean isShortenVersion() { return false; } } ~ Thank you, Paul Bors -----Original Message----- From: Daniel Watrous [mailto:dwmaill...@gmail.com] Sent: Monday, June 24, 2013 4:15 PM To: users@wicket.apache.org Subject: Customizing links in Paging Hello, I'm using the Paging functionality with my DataProvider. I've been trying to make a simple change, but it's turned out to be very difficult. Hopefully you can give a little help. I have a class that extends PagingNavigator and provides markup specific to my theme. When the paging links render, the current page doesn't render with an <a> tag around it. It's stripped away. I've traced through and found that this is most likely due to AutoEnable being set to true in the Link that's created. That choice is hard coded in to the PagingNavigationLink class. I'm trying to avoid extending all of the Paging related classes down to the PagingNavigationLink in order to customize this behavior. Is there some way to have that active page render inside an <a> tag with no href? Thanks, Daniel --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org