<?xml version="1.0"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you 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.
-->
<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<!-- my components examples -->

<faces-config>


    <!-- Managed Beans for sayhello.jsp -->
    <managed-bean>
        <managed-bean-name>sayHelloBean</managed-bean-name>
        <managed-bean-class>org.myorganization.component.example.SayHelloBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

    <!-- NAVIGATION RULES -->

    <navigation-rule>
        <navigation-case>
            <from-outcome>go_home</from-outcome>
            <to-view-id>/home.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

    <navigation-rule>
        <from-view-id>/validatorDemo.jsp</from-view-id>
        <navigation-case>
            <from-outcome>display_number</from-outcome>
            <to-view-id>/validatorDemoResult.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    
    <navigation-rule>
        <from-view-id>/converterDemo.jsp</from-view-id>
        <navigation-case>
            <from-outcome>display_phone</from-outcome>
            <to-view-id>/converterDemoResult.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

</faces-config>
