<%-- Copyright 2004-2005 The Apache Software Foundation. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. $Header:$ --%> <%@ page language="java" contentType="text/html;charset=UTF-8"%> <%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%> <%@ taglib prefix="netui-data" uri="http://beehive.apache.org/netui/tags-databinding-1.0"%> <%@ taglib prefix="netui-template" uri="http://beehive.apache.org/netui/tags-template-1.0"%> This example demonstrates the following features:
  • Plugging in your own LoginHandler
  • Using Page Flow inheritance for common actions and exception handlers
  • Using nested page flows
Some notes:
  • All login-related behavior (current user, login, logout, etc.) is defined by org.apache.beehive.samples.netui.loginexample.ExampleLoginHandler, which is registered as the login handler in WEB-INF/beehive-netui-config.xml. This overrides the default behavior, which is to use the current Servlet container's login mechanism.
  • When you click 'go to a protected flow', a NotLoggedInException will be thrown, because the 'goProtectedFlow' action is marked with loginRequired=true, and you are not currently logged in.
  • The current page flow does not handle NotLoggedInException, but its base class (loginexample.BaseFlow). The base class forwards to the Login nested page flow when this exception occurs.
  • There are two possible return actions from the Login nested page flow: 'loginSuccess' or 'loginCancel'. Take a look at each action, defined in loginexample.BaseFlow. The 'loginSuccess' action re-runs the original target action, which was 'goProtectedFlow'. Now that you're logged in, the action will succeed. The 'loginCancel' action just takes you back to the original page you were on.
  • If you've logged in successfully, you can hit 'go to a protected flow' again -- this time it will succeed.
  • Note that the current page flow (or any other page flow) knows nothing about the Login page flow. It only has to mark its protected actions with loginRequired=true. The base class page flow and the Login flow take care of the rest.

go to a protected page flow
log out