注:jsf演示例子都在同一个workspace中完成的,所以你会看到一些与本演示例子无关的代码!

UserBean.java

package org.baicai.jsf_document.simple_navigation;

public class UserBean
{
    private String name;
    private String password;
    private String errMessge;
 public String getName()
 {
  return name;
 }
 public void setName(String name)
 {
  this.name = name;
 }
 public String getPassword()
 {
  return password;
 }
 public void setPassword(String password)
 {
  this.password = password;
 }
 public String getErrMessge()
 {
  return errMessge;
 }
 public void setErrMessge(String errMessge)
 {
  this.errMessge = errMessge;
 }
    /**
     * 验证登录用户
     * @return
     */
 public String verify()
 {
  System.out.println("----调用UserBean的verify()-----");
  if(!name.equals("admin")||!password.equals("admin"))
  {
   errMessge="名称或密码错误";
   return "failure";
  }else
  {
   return "success";
  }
 }
   
}

WebRoot/index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!--第一步: 添加jsf的基本(html)标签标签库,和jsf的核心(cord)标签标签库 -->
     <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
     <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- f:view 相当于超文本标记语言的html,是必须要添加的。否则会出错 -->
<!-- Component javax.faces.component.UIViewRoot@92b535 not expected type.
 Expected: javax.faces.component.UIForm.  Perhaps you're missing a tag?  -->
 <f:view>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jsf Menu</title>
</head>
<body>
 <!-- jsf的表单标签,当页面有h:commandLink,h:commandButton标签时该标签是必须要添加的标签 否则这些标签没有用 -->
 <!--This link is disabled as it is not nested within a JSF form. -->
<h:form>
   <!-- h:commandLink 链接标签,相当于html中的a元素 . action属性的值有两种形式 ,本形式会直接根据导航进到下一个页面,value属性的值为页面的显示值 -->
  <h:commandLink action="simpleDemo" value="第一个jsf演示"></h:commandLink><br>
  <h:commandLink action="simplenavigation" value="jsf导航演示"></h:commandLink><br>
</h:form>
</body>
</f:view>
</html>

WebRoot/simplenavigation/index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
     <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<f:view>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>smplenavigation</title>
</head>
<body >
   <h:form>
        <h:outputText value="请输入用户名"></h:outputText>
        <h:inputText value="#{navigationUser.name}"></h:inputText>
        <h:outputText value="请输入用户名"></h:outputText>
        <h:inputSecret value="#{navigationUser.password}"></h:inputSecret>
        <!--commandButton提交标签 。action属性的值的另外一种形式   -->
        <h:commandButton action="#{navigationUser.verify}" value="登录" ></h:commandButton>
       
        <h:outputText value="#{navigationUser.errMessge}" style="color: red"></h:outputText>
   </h:form>
</body>
</f:view>
</html>

WebRoot/simplenavigation/welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
     <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<f:view>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>smplenavigation</title>
</head>
<body>
    <h:form>
       <h3>
        <h:outputText value="欢迎#{navigationUser.name}登录!"/>
       </h3>
    </h:form>
</body>
</f:view>
</html>

WebRoot/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
   <!-- 指定加载多个faces-config.xml文件,文件之间用逗号分开。  默认会加载faces-config.xml文件, -->
  <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>
                 /WEB-INF/faces-config/faces-config.xml,
                 /WEB-INF/faces-config/simpledemo-faces-config.xml,
                 /WEB-INF/faces-config/simplenavigation-faces-config.xml
   </param-value>
  </context-param>
 
  <!-- faces 的核心配置 -->
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

WebRoot/WEB-INF/faces-config/faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  <faces-config>
        <!-- 页面导航 -->
        <navigation-rule>
          <!-- 事件触发页面 -->
               <from-view-id>/index.jsp</from-view-id>
               <navigation-case>
               <!-- 返回结果的标记 -->
                  <from-outcome>simpleDemo</from-outcome>
               <!--触发事件后陈显结果的页面  -->
                  <to-view-id>/simpleDemo/index.jsp</to-view-id>
               </navigation-case>
              
              
               <navigation-case>
                      <from-action>simplenavigation</from-action>
          <to-view-id>/simplenavigation/index.jsp</to-view-id>
    </navigation-case>

</navigation-rule>
  </faces-config>

WebRoot/WEB-INF/faces-config/simplenavigation-faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
  <faces-config>
   <navigation-rule>
        <from-view-id>/simplenavigation/index.jsp</from-view-id>
          <!-- 根据页面上调用的managerBean中的方法得到返回字符串来判断结果页面 -->
        <navigation-case>
      <!-- 登录成功后 根据返回字符串success进入sg/welecom.jsp页面 -->
           <from-outcome>success</from-outcome>
           <to-view-id>/simplenavigation/welcome.jsp</to-view-id>
           <!-- 重定向  浏览器主动要求新网页 地址栏 发生明显的变化-->
           <redirect/>
        </navigation-case>
       
        <navigation-case>
        <!--登录失败后的处理:根据返回字符串failure进入到sg/index.jsp页面 -->
           <from-outcome>failure</from-outcome>
           <to-view-id>/simplenavigation/index.jsp</to-view-id>
        </navigation-case>
   </navigation-rule>
  
   <managed-bean>
         <managed-bean-name>navigationUser</managed-bean-name>
         <managed-bean-class>org.baicai.jsf_document.simple_navigation.UserBean</managed-bean-class>
         <managed-bean-scope>session</managed-bean-scope>
   </managed-bean>
  </faces-config>

jsf 的导航演示(navigation)相关推荐

  1. html调用百度地图语音播报,实现百度地图导航演示的语音播放功能

    在上面,百度地图导航演示是本地导入的,那么如何在此基础上实现导航语音广播呢? 首先,为应用程序申请语音广播(也称为注册) SDK具有内置的百度TTS语音广播功能,在使用该应用程序之前,需要对应用程序进 ...

  2. Android Jetpack导航组件——Navigation的使用

    概述 Navigation是采用一个Activity和多个Fragment形式设计的Ui架构模式,但是众所周知,Fragment的管理一直是个麻烦事,需要通过FragmentManager和Fragm ...

  3. Android导航组件Navigation从入门到精通

    文章目录 一.前言 二.导航简介 2.1 导航组件的组成 2.2 导航的原则 2.2.1 固定的起始目的地 2.2.2 导航状态表现为目的地堆栈 2.2.3 在应用的任务中向上按钮和返回按钮行为相同 ...

  4. 云客Drupal源码分析之导航菜单Navigation menus

    菜单系统概述: drupal8的菜单系统主要包含四大部分:导航菜单Navigation menus.本地任务Local tasks.本地动作Local actions.上下文链接Contextual ...

  5. JSF 中使用自定义Navigation

    过去的一段时间,一直有人拿 JSF 的 Navigation 当靶子,批评 JSF,其实细心的人会发现,在 Java 世界,这样的批评常常是很片面的,几乎所有成熟的应用框架,在除了实现某些默认的功能外 ...

  6. iPhone App开发导航条(Navigation Bar)素材PSD下载

    不管是iPhone还是Android的应用App界面基本上最上方都会有个导航条(Navigation Bar).于是我决定创建此页面整理收集所有好看的适合在iPhone App应用开发中使用的导航条素 ...

  7. android 导航栏navigation

    navigation有3个重要的组成部分:导航图 .NavHost  .NavController: 导航图即为xml文件 1.依赖: dependencies {def nav_version = ...

  8. 改变虚拟导航栏(navigation bar)背景色及图标颜色

    众所周知,安卓系统中存在着虚拟导航栏,它们不是实体按键,而是通过软件实现的.一般而言,虚拟导航栏是长成下面这样的: 系统中默认的虚拟导航栏的背景色是黑色,按键的颜色是白色.但是如果软件需要自定义主题色 ...

  9. React Native项目配置路由和选项卡导航__React Navigation的使用

    React Native 配置路由 在网上看了很多例子跟着写,发现都不行,发现之前的写法都已经弃用了,跟着官方一步步来吧. 参考官方文档:React Navigation 先创建好项目: npx re ...

最新文章

  1. 请与计算机管理员联系,电脑的限制被取消,请与管理员联系 解决方案
  2. linux中的fork函数详解
  3. php 回复id同过session 任意获取id不通过a,PHP会话ID相同但变量丢失
  4. 用神经网络分类原子和圆
  5. .net常見面試題(三)
  6. 相当全面:推荐系统干货总结
  7. 每月分享github上有意思的项目
  8. hdu 4597 + uva 10891(一类区间dp)
  9. linux centos命令语法,linux-centos7
  10. 【转】盛大创新院许式伟:影响我一生的五个重要选择
  11. [转]UE/UI/UCE/UED的区别 附UED团队网站链接
  12. Springboot项目启动的三种方式
  13. compose RxJava笔记
  14. 导入新工程,提示“Migrate Project to Gradle?”
  15. 转:极速的关键——斯巴鲁车系四驱系统详解
  16. 燕文物流完成上市辅导:董事长周文兴持股30%,曾因丢失邮件被批
  17. 常见英语面试问答_40个常见的工作面试问答
  18. “三网融合”的路还有多远?
  19. vbox 虚拟机添加usb
  20. ES学习笔记——ES入门:多条件查询、聚合、过滤、排序

热门文章

  1. Call to undefined method Illuminate\Database\Query\Builder::trashed()
  2. ios开发日记- 7 禁用搜狗键盘 使用系统键盘
  3. Java面试准备(三)——Java并发
  4. JS实现简易版备忘录
  5. Verilog数字系统基础设计-CRC
  6. 博客从wordpress迁移到Github.io、GitCafe
  7. 机器学习(一)- 线性回归/(拟合)模型
  8. GPU编程--OpenCL基本概念
  9. Mcafee EPO 使用公网地址
  10. 非结构化数据暴增,企业如何稳定高效的支撑日均百亿级访问?