[原创]ECLIPSE环境下利用ANT进行JSF开发入门(二)

Posted on 2006-05-06 02:42  CQIT-CS  阅读(904)  评论(0编辑  收藏  举报

    3.编写测试文件

       通过以上两步,已经把开发所需的环境搭建完成了。现在可以开始JSF页面文件和Manage Bean类的编写了.在本文中会介绍几种简单的JSF标签.

       JSF标签由两部分组成,一部分是html标签,另一部分是core标签,它们的URI分别是:http://java.sun.com/jsf/htmlhttp://java.sun.com/jsf/html .下面是JSPJAVA示例代码,我先把代码贴出来再对进行说明(文件名为UserBean.javaindex.jsp):

 1/*ManageBean:UserBean.java*/
 2
 3package src.com.corejsf;
 4
 5 
 6
 7public class UserBean {
 8
 9    
10
11    private String name;
12
13    private String password;
14
15    
16
17    public UserLogin() {}
18
19 
20
21    public String getName() {
22
23        return name;
24
25    }

26
27 
28
29    public void setName(String name) {
30
31        this.name = name;
32
33    }

34
35 
36
37    public String getPassword() {
38
39        return password;
40
41    }

42
43 
44
45    public void setPassword(String password) {
46
47        this.password = password;
48
49    }

50
51}

52
53

 

 

  1/*JSP Page:index.jsp*/
  2
  3<%@page contentType="text/html"%>
  4
  5<%@page pageEncoding="UTF-8"%>
  6
  7 
  8
  9<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
 10
 11<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
 12
 13 
 14
 15<html>
 16
 17<f:view>
 18
 19    <head>
 20
 21        <f:loadBundle basename="src.com.corejsf.textResource" var="msg" /> 
 22
 23        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 24
 25        <title>JSP Page</title>
 26
 27        <style>
 28
 29        .error{
 30
 31            color:red;
 32
 33            font-size:14pt;
 34
 35            font-style:italic;
 36
 37        }

 38
 39        
</style>
 40
 41    </head>
 42
 43    <body>
 44
 45    <h:form>
 46
 47    <table>
 48
 49        <tr>
 50
 51            <td>
 52
 53                <h:outputLabel value="#{msg.textName}" />
 54
 55            </td>
 56
 57            <td>
 58
 59                <h:inputText value="#{login.name}" />
 60
 61            </td>
 62
 63        </tr>
 64
 65        <tr>
 66
 67            <td>
 68
 69                <h:outputLabel value="#{msg.textPassword}" />
 70
 71            </td>
 72
 73            <td>
 74
 75                <h:inputSecret value="#{login.password}" />
 76
 77            </td>
 78
 79        </tr>
 80
 81         <tr>
 82
 83            <td>
 84
 85                MESSAGES:
 86
 87            </td>
 88
 89            <td>
 90
 91                <h:inputText  value="#{login.name}" id="name" />
 92
 93            </td>
 94
 95        </tr>
 96
 97        
 98
 99        <tr>
100
101            <td><h:commandButton action="usrLogin" value="Login"/></td>
102
103            <td>
104
105                <h:commandLink action="usrLogin">
106
107                    <f:param name="para" value="paraValue" />
108
109                    <h:outputText value="LinkToNextPage" />
110
111                </h:commandLink>
112
113            </td>
114
115        </tr>
116
117        
118
119    </table>
120
121    </h:form>
122
123    </body>
124
125</f:view>
126
127</html>
128
129 
130
131/*JSP Page: responsePage.jsp*/
132
133    <%@page contentType="text/html"%>
134
135    <%@page pageEncoding="UTF-8"%>
136
137 
138
139    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
140
141<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
142
143 
144
145    <html>
146
147    <f:view>
148
149    <head>
150
151        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
152
153        <title>JSP Page</title>
154
155    </head>
156
157    <body>
158
159    <h:outputFormat value="welcome {0} ,your password is {1}" >
160
161        <f:param value="#{login.name}" />
162
163        <f:param value="#{login.password}" />
164
165    </h:outputFormat>
166
167    <br/>
168
169    <%=request.getParameter("para")%>
170
171    </body>
172
173    </f:view>
174
175</html>
176
177

说明:文件最上面两行红色的代码作用是导入JSF开发所需的标签库.整个代码中绿色的部分就是应用的JSF标签,在这个JSP文件中所应用到的JSF html标签有:

       <h:outputLabel />

       <h:outputText />

       <h:inputText />

       <h:inputSecret />

       <h:commandButton action="usrLogin" value="Login"/>

       <h:commandLink action="usrLogin">

              <h:outputFormat value="welcome {0} your password is {1}" >

 

JSF core标签有:

       <f:view>

       <h:form>

       <f:loadBundle basename="src.com.corejsf.textResource" var="msg" />

       <f:param name="para" value="paraValue" />

JSF页面都被包含在<f:view></f:view>之间,表单域包含在<h:form></h:form>之间,以上的html标签都有一个共同的属性value,这个value可以是一个给定的字符串,也可以是绑定到ManageBean的一个字段.第二种用法更加灵活和广泛,也是我要说明的方法.

       上面的UserBean.java就是一个受管Bean,其实它就是一个普通的JAVA类,或者说它是一个普通的Bean.那么为什么有是受管Bean?其原因是在faces-config.xml中对其进行了配置,现在回过头去看第二步中展示的受管Bean的配置信息格式(如下):

       <managed-bean>

        <managed-bean-name>login</managed-bean-name>                                           <managed-bean-class>

           src.com.corejsf.UserBean

       </managed-bean-class>

        <managed-bean-scope>session</managed-bean-scope>

</managed-bean>

其中<managed-bean-name>指定了受管Bean的名称,这里是user; <managed-bean-class>指定了受管Bean的完整类路径.根据上面我建立的目录结构可知这里的完整类路径是src.com.corejsf.UserBean; <managed-bean-scope>指定了这个类的生存期,可设置为sessionrequestapplicationnone之一.TOMCAT启动的时候会读取 faces-config.xml文件,这时就会把已配置好的UserBean类作为受管Bean.

    现在,就可以把UserBean的字段和JSF标签中的value属性绑定了.方法是:value=#{login.name},这个绑定表达式就是把value的值和UserBeanname字段绑定.在页面显示的时候就会自动调用getter/setter方法.注意,在页面上进行绑定的时候引用的是在faces-config.xml中配置的<managed-bean-name>,因为在上面我用的是login,所以在页面上就是用的#{login.name},在运行的时候就会自动调用getName/setName方法.

    另外,在上面的index.jsp文件中有一个core标签是<f:loadBundle basename="src.com.corejsf.textResource" var="msg" />,这个标签的作用是引用一个资源文件,这个文件是一个属性文件(*.properties)basename指定了文件的完整类路径,var属性说明在当前页面中用msg这个名称在引用资源.这种资源也可以绑定到标签的value属性中,方法和受管Bean的绑定方法一样.

      

标签应用说明:

       <h:outputLabel value="#{msg.textName}" />:显示资源文件中textName字段的值

       <h:outputText  value="#{msg.textName}"/>:outputLabel

       <h:inputText value="#{login.name}" />:产生一个输入框,并和login.name绑定,输入的值存到name字段中.

       <h:inputSecret value="#{login.password}" />:产生一个密码输入框,并和login.password绑定, 输入的值存到password字段中.

       <h:commandButton action="usrLogin" value="Login"/>:产生一个命令按钮,当按下的时候激发usrLogin事件.

    说明:在按钮和超级连接中都有一个action属性,这个属性是用来产生页面导航的.下面是上文所讲的页面导航配置格式,其含义是当在index.jsp页面产生了一个usrLogin事件时,就跳转到responsePage.jsp:

       <navigation-rule>

             <from-view-id>/index.jsp</from-view-id>

             <navigation-case>

                 <from-outcome>usrLogin</from-outcome>

                 <to-view-id>/responsePage.jsp</to-view-id>

             </navigation-case>

    </navigation-rule>

    <h:commandLink action="usrLogin">:作用如上面所说,另外,这个标签还可以和<f:param name="para" value="paraValue" />标签组合使用, <f:param name="para" value="paraValue" />标签就是传到下一个页面的参数,这个标签的功能就如同在URL后添加?para=paraValue这样的参数.根据配置,index.jsp页面中:

       <h:commandLink action="usrLogin">

        <f:param name="para" value="paraValue" />

           <h:outputText value="LinkToNextPage" />

    </h:commandLink>

这一段的功能同

       <a href=”http://localhost:8888/JSFApp/faces/responsePage.jsp?para=paraValue”>LinkToNextPage</a>

      

       把上面的JSP文件内容复制到工程文件夹的/web/index.jsp中,JAVA文件复制到/src/com/corejsf/UserBean.java.再在faces-config.xml中添加如下的配置信息:

      

 1<navigation-rule>
 2
 3        <from-view-id>/index.jsp</from-view-id>
 4
 5        <navigation-case>
 6
 7            <from-outcome>usrLogin</from-outcome>
 8
 9            <to-view-id>/responsePage.jsp</to-view-id>
10
11        </navigation-case>
12
13    </navigation-rule>
14
15   
16
17   <managed-bean>
18
19        <managed-bean-name>login</managed-bean-name>
20
21        <managed-bean-class>src.com.corejsf.UserBean</managed-bean-class>
22
23        <managed-bean-scope>session</managed-bean-scope>
24
25    </managed-bean>
26

Copyright © 2024 CQIT-CS
Powered by .NET 8.0 on Kubernetes