View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one
    3    * or more contributor license agreements.  See the NOTICE file
    4    * distributed with this work for additional information
    5    * regarding copyright ownership.  The ASF licenses this file
    6    * to you under the Apache License, Version 2.0 (the
    7    * "License"); you may not use this file except in compliance
    8    * with the License.  You may obtain a copy of the License at
    9    *
    10   *   http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   * Unless required by applicable law or agreed to in writing,
    13   * software distributed under the License is distributed on an
    14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    15   * KIND, either express or implied.  See the License for the
    16   * specific language governing permissions and limitations
    17   * under the License.
    18   */
    19
    20  package org.apache.myfaces.orchestra.viewController;
    21
    22  /**
    23   * An interface for use with the InterfaceViewControllerExecutor.
    24   * <p>
    25   * When the InterfaceViewControllerExecutor has been selected as the technique for mapping
    26   * lifecycle events onto bean methods, then the target bean must implement this interface
    27   * in order to get callbacks.
    28   * <p>
    29   * Note that the expression "view controller bean" is used to generally refer to an object
    30   * that can handle lifecycle events for a view. Such beans may implement this interface, but
    31   * may not - they might be accessed via the ReflectiveViewControllerExecutor or other
    32   * implementations that do not require this interface.
    33   */
    34  public interface ViewController
    35  {
    36      /**
    37       * This method will <i>always</i> be called before any other method is invoked
    38       * on any backing bean for the current request. It is invoked once for each
    39       * request.
    40       * <p>
    41       * This callback could possibly be better named "notifyBeginRequestUsingThisView"
    42       * or similar, as it is invoked per request.
    43       * <p>
    44       * There are three different situations in which initView callbacks occur:
    45       * <ol>
    46       * <li>
    47       * A view is just being rendered.<br>
    48       * The initView callback gets called once (at BeforeRender)
    49       * </li>
    50       * <li>
    51       * A postback is processed, no navigation occurs.<br>
    52       * The initView callback gets called once (at AfterRestoreView)
    53       * </li>
    54       * <li>
    55       * A postback occurs, navigation to a different view instance occurs.<br>
    56       * The initView callback gets called once for the original view, and then once for the new view.
    57       * </li>
    58       * </ol>
    59       * <p>
    60       * Note that the condition tested is whether the <i>view instance</i> has changed; if navigation causes
    61       * a new view root to be created then the initView callback occurs even if that view root has the
    62       * same viewId [1].
    63       * <p>
    64       * Note [1]: Orchestra versions 1.3 and earlier test only the viewId string.
    65       */
    66      public void initView();
    67
    68      /**
    69       * This method will be invoked before any "action" callbacks related to buttons,
    70       * links, etc. are invoked on backing beans for the current request.
    71       * <p>
    72       * For JSF, there is an exception: for command components marked as "immediate",
    73       * the associated action method is invoked before this callback occurs. If that
    74       * method then performs navigation then this callback will not occur at all.
    75       * <p>
    76       * Note also that for JSF, if validation failures occur then this callback will
    77       * not be invoked (as actions are skipped).
    78       */
    79      public void preProcess();
    80
    81      /**
    82       * This method will be invoked just before starting to render output to the user.
    83       */
    84      public void preRenderView();
    85  }