如何获取重定向页面

时间:2012-09-17 15:15:40

标签: java wicket

我有两页:

@AuthorizeInstantiation(Roles.ADMIN)
public class AdminPage extends BasePage {
...

@AuthorizeInstantiation(Roles.USER)
public class UserPage extends BasePage {
...

当没有任何用户登录时,他被重定向到登录页面。有没有选项如何获取重定向页面?因此,如果用户转到管理页面,则登录页面println管理页面。如果用户转到用户页面然后登录页面打印用户页面,当用户只进入登录页面然后登录页面println null

更新:

转到受保护页面时的

策略

    getApplicationSettings().setAccessDeniedPage(LoginPage.class);

什么不清楚?当用户想要访问UserPage或AdminPage时,他被指定为LoginPage。我想在loginPage中打印哪个页面

3 个答案:

答案 0 :(得分:0)

我不知道它是否正是您所寻找的,但您可以查看

RestartResponseAtInterceptPageException.InterceptData.get();

InterceptData包含有关触发重定向的页面的一些信息。

答案 1 :(得分:0)

您尚未描述如何重定向到登录页面。我猜你实现了IAuthorizationStrategy和IUnauthorizedComponentInstantiationListener?在onUnauthorizedInstantiation()的实现中,您可以检查传入的Component(也就是您的页面)中存在哪个注释,并根据此传递参数到登录页面。

答案 2 :(得分:0)

好的,我明白了:

我创建了unauthorizedComponentInstantiationListener:

    getSecuritySettings().setUnauthorizedComponentInstantiationListener(
            new IUnauthorizedComponentInstantiationListener() {
                public void onUnauthorizedInstantiation(final Component component) {
                    if (component instanceof Page) {
                        // Redirect to index
                        if (component instanceof AdminPage) {
                            redirectionPage = ((AdminPage) component);
                        } else if (component instanceof BalancerPage) {
                            redirectionPage = ((UserPage) component);
                        }
                        throw new RestartResponseAtInterceptPageException(LoginPage.class);
                        // Or you can just throw the original UnauthorizedInstantiationException
                    } else {
                        component.setVisible(false);
                    }
                }
            });

并在appliaction中设置变量。

然后在登录页面中我拨打Application.getRedirectionPage()所以我知道它是哪个页面