posts - 15,  comments - 5,  trackbacks - 0

                  從昨天晚上到現在,終于在自己的瀏覽器上完成了自己的第一個JSF程序,暈哦!終于明白很多東西要親手實現才能完成,書上有一些是不會提到的,寫完的時候都是報錯。再返回去看書上的,沒錯啊!一步一步做的,沒辦法,今天在網上到處找問題的原因。呵呵!經過千辛萬苦,終于搞定了。把代碼和部署的過程帖上來,希望各位大俠多多指點。由于我的英語不太好,很多東西翻譯不準確,我就用原文中的英語表示,希望大家原諒。
          有點懶,直接把myfaces里的myfaces-blank-example.war拷貝到$TOMCAT_HOME\webapps的主目錄下,把目錄名改成hello。
          在里面生成兩個jsp文件,一個是hello.jsp,另一個是goodbye.jsp。
          hello.jsp的結構:
          1.在頁面的最上面用綠色顯示Welcome to JavaServer Face!
          2.一個message taglib,當提交的表單數據不合法時顯示錯誤信息
          3.一個含有text box的表單(輸入的數據必須是1到500才會提交)
          4.儲存你最后一次提交的數據在JavaBean的numControls里
          5.在Text的下面有一個Grid,用于顯示從0到numControls-1的數
          6.一個Redisplay按鈕,用于提交表單
          7.一個Goodbye按鈕,用于顯示goodbye.jsp
          goodbye.jsp的結構如下:
          1.在頁面的最上面用綠色顯示Goodbye!
          2.下面顯示JavaBean里的numControls的值
          另外,我們當然還需要一個JavaBean文件,So,新建一個HelloBean文件,代碼如下

           1package com.gem.hello;
           2
           3import javax.faces.application.Application;
           4import javax.faces.component.html.HtmlOutputText;
           5import javax.faces.component.html.HtmlPanelGrid;
           6import javax.faces.context.FacesContext;
           7import javax.faces.event.ActionEvent;
           8
           9import java.util.List;
          10
          11public class HelloBean {
          12   private int numControls;
          13   private HtmlPanelGrid controlPanel;
          14   
          15   public int getNumControls() {
          16      return numControls;
          17   }

          18   public void setNumControls(int numControls) {
          19      this.numControls = numControls;
          20   }

          21   public HtmlPanelGrid getControlPanel() {
          22      return controlPanel;
          23   }

          24   public void setControlPanel(HtmlPanelGrid controlPanel) {
          25      this.controlPanel = controlPanel;
          26   }

          27   
          28   public void addControls(ActionEvent actionEvent) {
          29      Application application = FacesContext.getCurrentInstance().getApplication();
          30      List children = controlPanel.getChildren();
          31      children.clear();
          32      for (int count = 0; count < numControls; count++{
          33         HtmlOutputText output = (HtmlOutputText)application.
          34                                  createComponent(HtmlOutputText.COMPONENT_TYPE);
          35         output.setValue(" " + count + " ");
          36         output.setStyle("color: blue");
          37         children.add(output);
          38      }

          39   }

          40   
          41   public String goodbye() {
          42      return "success";
          43   }

          44}


          用ant把它編譯了,ant的使用這里就不再重復,網上很多,這方面的資料。記得把jsf-api.jar和jsf-impl.jar加在compile.classpath里就好:)
          新建一個jsp文件,hello.jsp
          代碼如下:
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>

           1<%@?page?contentType="text/html;charset=UTF-8"?language="java"?%>
           2<%@?taglib?uri="http://java.sun.com/jsf/html"?prefix="h"?%>
           3<%@?taglib?uri="http://java.sun.com/jsf/core"?prefix="f"?%>
           4
           5
           6<f:view>
           7  <html>
           8   <head>
           9    <title>
          10     helloWorld!
          11    </title>
          12   </head>
          13   <body>
          14      <h:form id="WelcomeForm">
          15     <h:outputText id="WelcomeOutput"
          16        value="Welcome to JavaServer Face!"
          17        style="font-family: Arial, sans-serif; font-size: 24;
          18        color: green;"/>
          19     <p>
          20      <h:message id="errors" for="helloInput" style="color: red"/>
          21     <p>
          22     <p>
          23      <h:outputLabel for="helloInput">
          24       <h:outputText id="helloInputLabel"
          25          value="Enter number of controls to display:"/>
          26      h:outputLabel>
          27      <h:inputText id="helloInput" value="#{helloBean.numControls}"
          28                    required="true">
          29         <f:validateLongRange minimum="1" maximum="500"/>
          30       h:inputText>
          31     <p>
          32     <p>
          33      <h:panelGrid id="controlPanel"
          34                  binding="#{helloBean.controlPanel}"
          35                  columns="20" border="1" cellspacing="0"/>
          36     <p>
          37     <h:commandButton id="redispalyCommand" type="submit"
          38                     value="Redisplay"
          39                     actionListener="#{helloBean.addControls}"/>
          40     <h:commandButton id="goodbyeCommand" type="submit" value="Goodbye"
          41                     action="#{helloBean.goodbye}" immediate="true"/>
          42     </h:form>
          43   </body>
          44  </html>
          45</f:view>

          里面的taglib的功能我就不介紹了,自己看sun公司的文檔,免得翻譯不好,誤人子弟啊!
          接著新建一個goodbye.jsp文件,代碼如下:
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
           1<%@?page?contentType="text/html;charset=UTF-8"?language="java"?%>
           2<%@?taglib?uri="http://java.sun.com/jsf/html"?prefix="h"?%>
           3<%@?taglib?uri="http://java.sun.com/jsf/core"?prefix="f"%>
           4
           5<f:view>
           6 <html>
           7  <head>
           8   <title>
           9    JFC - hello world!
          10   </title>
          11  </head>
          12  <body>
          13   <h:form id="goodbyeForm">
          14    <p>
          15     <h:outputText id="welcomeOutput" value="Goodbye!"
          16                        style="font-family: Arial, sans-serif; font-size: 24;
          17                        font-style: bold; color: green;"/>
          18    <p>
          19    <p>
          20     <h:outputText id="helloBeanOutputLabel"
          21                  value="Number of controls displayed: "/>
          22      <h:outputText id="helloBeanOutPut"
          23                   value="#{helloBean.numControls}"/>
          24    <p>
          25   </h:form>
          26  </body>
          27 </html>
          28</f:view>

          現在配置web.xml文件和config文件
          web.xml文件的代碼如下:
           1<?xml version="1.0" encoding="UTF-8"?>
           2
           3<!DOCTYPE web-app PUBLIC
           4  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
           5  "http://java.sun.com/dtd/web-app_2_3.dtd">
           6
           7<web-app>
           8
           9    <context-param>
          10        <param-name>javax.faces.CONFIG_FILESparam-name>
          11        <param-value>
          12            /WEB-INF/examples-config.xml
          13        param-value>
          14        <description>
          15            Comma separated list of URIs of (additional) faces config files.
          16            (e.g. /WEB-INF/my-config.xml)
          17            See JSF 1.0 PRD2, 10.3.2
          18        description>
          19    context-param>
          20
          21
          22    
          23    <servlet>
          24        <servlet-name>Faces Servletservlet-name>
          25        <servlet-class>javax.faces.webapp.FacesServletservlet-class>
          26        <load-on-startup>1load-on-startup>
          27    servlet>
          28
          29    <servlet-mapping>
          30        <servlet-name>Faces Servletservlet-name>
          31        <url-pattern>*.jsfurl-pattern>
          32    servlet-mapping>
          33
          34    
          35    <welcome-file-list>
          36        <welcome-file>index.jspwelcome-file>
          37    welcome-file-list>
          38    
          39    
          40    <jsp-config>
          41    <taglib>
          42      <taglib-uri>http://java.sun.com/jsf/coretaglib-uri>
          43      <taglib-location>/WEB-INF/lib/jsf_core.tldtaglib-location>
          44    taglib>
          45    <taglib>
          46      <taglib-uri>http://java.sun.com/jsf/htmltaglib-uri>
          47      <taglib-location>/WEB-INF/lib/html_basic.tldtaglib-location>
          48    taglib>
          49   jsp-config>
          50web-app>

          由于我用的是空模板,所以對于config文件我沒改名,examples-config.xml
          的代碼如下:
           1xml version="1.0" encoding="UTF-8"?>
           2DOCTYPE faces-config PUBLIC
           3  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
           4  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd" >
           5
           6<faces-config>
           7 
           8 
           9 <managed-bean>
          10  <managed-bean-name>helloBeanmanaged-bean-name>
          11  <managed-bean-class>com.gem.hello.HelloBeanmanaged-bean-class>
          12  <managed-bean-scope>sessionmanaged-bean-scope>
          13 managed-bean>
          14 
          15 
          16 <navigation-rule>
          17  <from-view-id>/hello.jspfrom-view-id>
          18  <navigation-case>
          19   <from-outcome>successfrom-outcome>
          20   <to-view-id>/goodbye.jspto-view-id>
          21  navigation-case>
          22 navigation-rule>
          23 faces-config>
           
          還有就是記得把jstl.jar文件放在lib目錄下,要不然會報錯。如果機子上沒有,就去sun的網站上下,或者下一個spring,里面就有這個文件。
          好了,現在在瀏覽器里面輸入
          http://127.0.0.1:8080/hello/hello.jsf,就可以了。注意,是hello.jsf,不是hello.jsp哦!
          posted on 2005-08-27 19:41 MudFish 閱讀(477) 評論(1)  編輯  收藏 所屬分類: JSP

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 尼木县| 互助| 寻乌县| 镇巴县| 武陟县| 霍城县| 屏山县| 策勒县| 灌南县| 漯河市| 驻马店市| 华蓥市| 罗江县| 武川县| 泰州市| 讷河市| 阳城县| 蛟河市| 手机| 策勒县| 肇庆市| 乌拉特前旗| 淳化县| 堆龙德庆县| 南京市| 平罗县| 年辖:市辖区| 子洲县| 方城县| 和平区| 丹巴县| 乐都县| 新沂市| 宜城市| 宜兴市| 玉山县| 新安县| 泰安市| 泗水县| 云梦县| 镇平县|