<wicket:link> <link rel="shortcut icon" type="image/x-icon" href="ico/favicon.ico"/> </wicket:link>
Put the icon relative to the Page it is in.
com/myapp/Page.html com/myapp/Page.java com/myapp/ico/favicon.ico
Disadvantage: Bound to component.
FavIconLink<link wicket:id="favicon" rel="shortcut icon" type="image/x-icon" href="images/ico/Leaf.ico"/>
public class BaseLayoutPage extends WebPage {
public BaseLayoutPage() {
add( new FavIconLink("favicon", "favicon.ico") );
public class FavIconLink extends ExternalLink
{
public FavIconLink( String id, String path ){
super( id, path );
add(new AttributeModifier("type", "image/x-icon"));
add(new AttributeModifier("rel", "shortcut icon"));
this.setContextRelative( true );
}
}
And put the favicon.ico into .jar's root, i.e. by putting to
webapp/ in Maven WAR app.
FavIconHeaderContributor behaviorpublic class WicketJavaEEApplication extends WebApplication {
@Override protected void init() {
super.init();
getSharedResources().add("favicon", new ContextRelativeResource("WEB-INF/classes/Leaf.ico"));
mountResource("/favicon.ico", new SharedResourceReference("favicon") );
add( new FavIconHeaderContributor( new SharedResourceReference("favicon") ) );
public class FavIconHeaderContributor implements IHeaderContributor
{
private ResourceReference resRef;
public FavIconHeaderContributor(ResourceReference ref){
resRef = ref;
}
public void renderHead(IHeaderResponse response) {
CharSequence url = RequestCycle.get().urlFor(resRef, null);
// Wicket 1.5:
response.renderString( this.getFavIconReference(url) );
// Wicket 1.6:
//response.render( new StringHeaderItem( this.getFavIconReference(url) ) );
}
private CharSequence getFavIconReference(CharSequence url) {
StringBuilder sb=new StringBuilder();
sb.append("<link rel=\"shortcut icon\" href=\"").append(url).append("\" type=\"image/x-icon\">\n");
return sb.toString();
}
}