JSF学习及应用二-(用例)

 

实例1

1、 创建一个JSP

2、 在相同的路径下,用.jsf扩展名访问.jsp文件。

Jsf使用同名的JSP来作为程序的展现,所以,可以通过JSF扩展名结尾的URL地址访问JSP页面。(为此,可能需要编写一个过滤器,将所有对JSP的访问全部重定向到同名的jsf扩展名结尾的URL地址)

实例2

我们创建一个表单,并提供一个按钮,点击按钮之后转向另外一个页面,这就涉及到了JSF页面编写的基本规则,以及页面导航。

l         首先创建一个JSP文件(jsf_01.jsp),并在JSP页面添加JSF的TAG LIB

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

l         添加view和form标签以及命令按钮

JSF的页面是由JSF的组件树组成的。这叫view。 view标签是视图的根,其它所有的JSF标签,必须被一个view标签包含!

form标签是页面表单。其它一些组件,比如文本输入框必须被包含在一个form标签的内部。

如:

<f:view>

    <h:form>

       <h:commandButton action="success"/>

    </h:form>

</f:view>

action 的值,是命令的结果,即点击之后,导向success!

l         创建另外一个JSP文件(jsf_01_success.jsp)

<%@ page language="java" contentType="text/html; charset=GB18030"

    pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">

<title>Insert title here</title>

</head>

<body>

转向成功

</body>

</html>

l         现在,我们需要在第一个页面和第二个页面之间建立关联,因为第一个页面有一个命令,它的结果是success。我们需要在faces-config.xml中配置导航规则。

<faces-config >

    <navigation-rule>

       <from-view-id>/jsf/test/jsf_01.jsp</from-view-id>

       <navigation-case>

           <from-outcome>success</from-outcome>

           <to-view-id>/jsf/test/jsf_01_success.jsp</to-view-id>

       </navigation-case>

    </navigation-rule>

</faces-config>

运行jsf_01.jsp之后,将出现一个命令按钮,点击之后,将转向jsf_01_success.jsp。

实例3

实例2中,只有一个命令按钮,我们在实例3中将多添加一个命令按钮,并增加一个转向:

Jsf_01.jsp改为:

<f:view>

    <h:form>

       <h:commandButton action="success" value="转向成功页面"/>

       <h:commandButton action="error" value="转向失败页面"/>

    </h:form>

</f:view>

Value 是显示的按钮的值。

添加jsf_01_error.jsp:

<%@ page language="java" contentType="text/html; charset=GB18030"

    pageEncoding="GB18030"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">

<title>Insert title here</title>

</head>

<body>

转向错误

</body>

</html>

修改faces-confi.xml文件:

<faces-config >

    <navigation-rule>

       <from-view-id>/jsf/test/jsf_01.jsp</from-view-id>

       <navigation-case>

           <from-outcome>success</from-outcome>

           <to-view-id>/jsf/test/jsf_01_success.jsp</to-view-id>

       </navigation-case>

       <navigation-case>

           <from-outcome>error</from-outcome>

           <to-view-id>/jsf/test/jsf_01_error.jsp</to-view-id>

       </navigation-case>

    </navigation-rule>

</faces-config>

重新运行测试!

实例4

在实例2、3中,都是静态转向,也就是说,在命令按钮中规定了转向(成功或失败)。现在,我们需要动态的转向。也就是说,点击按钮之后,需要执行一个命令,根据命令的执行结果,决定转向!

这时候,我们需要一个支持的Java Bean(Backing Bean):

我们编写一个 非常简单的BackingBean01.java

package com. web.jsf.test;

public class BackingBean01 {

       public String gogogo(){

              if(Math.random() > 0.5 ){

                     return "success";

              }

              return "error";

       }

}

然后,我们需要在faces-config.xml文件中注册这个Bean:

    <managed-bean>

       <managed-bean-name>firstbean</managed-bean-name>

        <managed-bean-class>com.web.jsf.test.BackingBean01</managed-bean-class>

       <managed-bean-scope>request</managed-bean-scope>

    </managed-bean>

修改jsf_01.jsp文件为:

<f:view>

    <h:form>

       <h:commandButton action="success" value="转向成功页面"/>

       <h:commandButton action="error" value="转向失败页面"/>

       <h:commandButton action="#{firstbean.gogogo}"value="动态转向测试"/>

    </h:form>

</f:view>

在这里,action是一个动态表达式。这是JSF的表达式。Firstbean是bean的名字,后面是命令方法,这个方法返回值为String,它将决定其转向!

实例5

现在,该是传递一些数据的时候了!我们开发一个计算器,从页面上输入两个int值,计算结果将显示在另外一个页面上。

考虑JavaBean模型:

1、 BackingBean现在必须能够接收这两个int类型的值,并且需要能够输出结果,在JSF中,通过在BackingBean上定义属性做到这一点。

2、 BackingBean还应该负责计算这两个输入的值,这是一个命令方法。

我们添加number1、number2、result三个属性以及一个命令方法:

package com.web.jsf.test;

public class BackingBean01 {

       private int number1;

       private int number2;

       private int result;

       public int getNumber1() {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值