Лучшим решением, чем RedirectPage, является пользовательское поведение. Очевидная проблема с RedirectPage заключается в том, что вы не можете использовать общий базовый класс для макета страницы.
public class RedirectBehavior extends Behavior {
private final Class<? extends Page> page;
private final int redirectInSeconds;
public RedirectBehavior(Class<? extends Page> page, int redirectInSeconds) {
this.page = page;
this.redirectInSeconds = redirectInSeconds;
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
response.renderString(String.format("<meta http-equiv='refresh' content='%d;URL=%s' />", redirectInSeconds,
RequestCycle.get().urlFor(page, null)));
}
}
Таким образом, вы можете передать возвращаемое значение из getHomePage()
напрямую - нет необходимости в newInstance()
:
public class PageExpiredPage extends YourBasePage {
public PageExpiredPage () {
add(new RedirectBehavior(Application.get().getHomePage(), 5));
}
}