<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jwebee

    jwebee

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      11 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

    2008年5月22日 #

    想給全球50億手機用戶開發軟件嗎?本信息來源于趕集網ganji.com
    你想在移動互聯網行業創業?我們教你!
    你想學習智能手機開發,我們教你!
    你想做一個產品,我們幫你!
    你想。。。
    讓創新辦公室來實現您的夢想!

    合作模式
    第一階段:Android/Ophone/樂phone培訓(收費)
    第二階段:承接外包項目或合作開發項目(分成)

    用3-6個月時間,和我們一起工作、成長,使你變成程序天才
    給你外包項目或合作項目,培養您的綜合(自學、演講、管理)能力
    教您如何在移動互聯網市場強得先機,賺取你人生的第一桶金
    如果您離開創新辦公室,我們幫你創業或介紹進入公司工作

    每周末免費3G技術講座,敬請預約!

    電話:029-68062269
    qq:1203740654
    地址:西安市富裕路中段(外事學院北校區西行100米)

    posted @ 2010-09-17 17:15 jwebee 閱讀(96) | 評論 (0)編輯 收藏

    JSF的國際化(Internnationalization)訊息處理是基於Java對國際化的支援,您可以在一個訊息資源檔中統一管理訊息資源,資源檔的名稱是.properties,而內容是名稱與值的配對,例如:
    • messages.properties
     
    titleText=JSF Demo
    hintText=Please input your name and password
    nameText=name
    passText=password
    commandText=Submit

     

    資源檔名稱由basename加上語言與地區來組成,例如:
    • basename.properties
    • basename_en.properties
    • basename_zh_TW.properties

     

    沒有指定語言與地區的basename是預設的資源檔名稱,JSF會根據瀏覽器送來的Accept-Language header中的內容來決定該使用哪一個資源檔名稱,例如:

     

    Accept-Language: zh_TW, en-US, en

     

    如果瀏覽器送來這些header,則預設會使用繁體中文,接著是美式英文,再來是英文語系,如果找不到對應的訊息資源檔,則會使用預設的訊息資源檔。

     

    由於訊息資源檔必須是ISO-8859-1編碼,所以對於非西方語系的處理,必須先將之轉換為Java Unicode Escape格式,例如您可以先在訊息資源檔中寫下以下的內容:
    • messages_zh_TW.txt
     
    titleText=JSF示範
    hintText=請輸入名稱與密碼
    nameText=名稱
    passText=密碼
    commandText=送出

     

    然後使用JDK的工具程式native2ascii來轉換,例如:

     

    native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties

     

    轉換後的內容會如下:
    • messages_zh_TW.properties
     
    titleText=JSF\u793a\u7bc4
    hintText=\u8acb\u8f38\u5165\u540d\u7a31\u8207\u5bc6\u78bc
    nameText=\u540d\u7a31
    passText=\u5bc6\u78bc
    commandText=\u9001\u51fa

     

    接下來您可以使用<f:loadBundle>標籤來指定載入訊息資源,一個例子如下:
    • index.jsp
     
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@page contentType="text/html;charset=UTF-8"%>

    <f:view>
    <f:loadBundle basename="messages" var="msgs"/>

    <html>
    <head>
    <title><h:outputText value="#{msgs.titleText}"/></title>
    </head>
    <body>

    <h:form>
    <h3><h:outputText value="#{msgs.hintText}"/></h3>
    <h:outputText value="#{msgs.nameText}"/>:
    <h:inputText value="#{user.name}"/><p>
    <h:outputText value="#{msgs.passText}"/>:
    <h:inputSecret value="#{user.password}"/><p>
    <h:commandButton value="#{msgs.commandText}"
    actionListener="#{user.verify}"
    action="#{user.outcome}"/>
    </h:form>

    </body>
    </html>

    </f:view>

     

    如此一來,如果您的瀏覽器預設接受zh_TW語系的話,則頁面上就可以顯示中文,否則預設將以英文顯示,也就是messages.properties的內容,為了能顯示多國語系,我們設定網頁編碼為UTF8。

     

    <f:view>可以設定locale屬性,直接指定所要使用的語系,例如:
     
    <f:view locale="zh_TW">
    <f:loadBundle basename="messages" var="msgs"/>

     

    直接指定以上的話,則會使用繁體中文來顯示,JSF會根據<f:loadBundle>的basename屬性加上<f:view>的locale屬性來決定要使用哪一個訊息資源檔,就上例而言,就是使用 messages_zh_TW.properties,如果設定為以下的話,就會使用messages_en.properties:
     
    <f:view locale="en">
    <f:loadBundle basename="messages" var="msgs"/>

     

    您也可以在faces-config.xml中設定語系,例如:
     
    <faces-config>
    <application>
    <local-config>
    <default-locale>en</default-locale>
    <supported-locale>zh_TW</supported-locale>
    </local-config>
    </application>

    .....
    </faces-config>

     

    在<local-config>一定有一個<default-locale>,而<supported- locale>可以有好幾個,這告訴JSF您的應用程式支援哪些語系。

     

    當然,如果您可以提供一個選項讓使用者選擇自己的語系會是更好的方式,例如根據user這個Bean的locale屬性來決定頁面語系:
     
    <f:view locale="#{user.locale}">
    <f:loadBundle basename="messages" var="msgs"/>

     

    在頁面中設定一個表單,可以讓使用者選擇語系,例如設定單選鈕:
     
    <h:selectOneRadio value="#{user.locale}">
    <f:selectItem itemValue="zh_TW"
    itemLabel="#{msgs.zh_TWText}"/>
    <f:selectItem itemValue="en"
    itemLabel="#{msgs.enText}"/>
    </h:selectOneRadio>



    周行 2008-05-22 12:39 發表評論

    文章來源:http://www.tkk7.com/zhouxing/archive/2008/05/22/I18NMessages.html
    posted @ 2008-05-22 12:39 jwebee 閱讀(118) | 評論 (0)編輯 收藏

    JSF Expression Language 搭配 JSF 標籤來使用,是用來存取資料物件的一個簡易語言。

     

    JSF EL是以#開始,將變數或運算式放置在 { 與 } 之間,例如:
     
    #{someBeanName}

     

    變數名稱可以是faces-config.xml中定義的名稱,如果是Bean的話,可以透過使用 '.' 運算子來存取它的屬性,例如:
     
    ...
    <f:view>
    <h:outputText value="#{userBean.name}"/>
    </f:view>
    ...

     

    在JSF標籤的屬性上," 與 " (或'與')之間如果含有EL,則會加以運算,您也可以這麼使用它:
     
    ...
    <f:view>
    名稱, 年齡:<h:outputText
    value="#{userBean.name}, #{userBean.age}"/>
    </f:view>
    ...

     

    一個執行的結果可能是這樣顯示的:
     
    名稱, 年齡:Justin, 29

     

    EL的變數名也可以程式執行過程中所宣告的名稱,或是JSF EL預設的隱含物件,例如下面的程式使用param隱含物件來取得使用者輸入的參數:
     
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@page contentType="text/html; charset=Big5"%>

    <html>
    <head>
    <title></title>
    </head>
    <body>
    <f:view>
    <b> 您好, <h:outputText value="#{param.name}"/> </b>
    </f:view>

    </body>
    </html>

     

    param是JSF EL預設的隱含物件變數,它代表request所有參數的集合,實際是一個java.util.Map型態物件,JSF所提供的隱含物件,大致上對應於 JSP 隱含物件,不過JSF隱含物件移除了pageScope與pageContext,而增加了facesContext與view,它們分別對應於 javax.faces.context.FacesContext與javax.faces.component.UIViewRoot。

     

    對於Map型態物件,我們可以使用 '.' 運算子指定key值來取出對應的value,也可以使用 [ 與 ] 來指定,例如:
     
    ...
    <f:view>
    <b> 您好, <h:outputText value="#{param['name']}"/> </b>
    </f:view>
    ...

     

    在 [ 與 ] 之間,也可以放置其它的變數值,例如:
     
    ...
    <f:view>
    <h:outputText value="#{someBean.someMap[user.name]}"/>
    </f:view>
    ...

     

    如果變數是List型態或陣列的話,則可以在 [] 中指定索引,例如:
     
    ....
    <f:view>
    <h:outputText value="#{someBean.someList[0]}"/>
    <h:outputText value="#{someBean.someArray[1]}"/>
    <h:outputText
    value="#{someBean.someListOrArray[user.age]}"/>
    </f:view>
    ....

     

    您也可以指定字面常數,對於true、false、字串、數字,JSF EL會嘗試進行轉換,例如:
     
    ....
    <h:outputText value="#{true}"/>
    ....

    <h:outputText value="#{'This is a test'}"/>
    ....

     

    如果要輸出字串,必須以單引號 ' 或雙引數 " 括住,如此才不會被認為是變數名稱。

     

    在宣告變數名稱時,要留意不可與JSF的保留字或關鍵字同名,例如不可取以下這些名稱:
     
    true false null div mod and or not eq ne lt gt le ge instanceof empty

     

    使用EL,您可以直接實行一些算術運算、邏輯運算與關係運算,其使用就如同在一般常見的程式語言中之運算。

     

    算術運算子有:加法 (+), 減法 (-), 乘法 (*), 除法 (/ or div) 與餘除 (% or mod) 。下面是算術運算的一些例子:
    運算式 結果
    #{1} 1
    #{1 + 2} 3
    #{1.2 + 2.3} 3.5
    #{1.2E4 + 1.4} 12001.4
    #{-4 - 2} -6
    #{21 * 2} 42
    #{3/4} 0.75
    #{3 div 4} 0.75,除法
    #{3/0} Infinity
    #{10%4} 2
    #{10 mod 4} 2,也是餘除
    #{(1==2) ? 3 : 4} 4

     

    如同在Java語法一樣 ( expression ? result1 : result2)是個三元運算,expression為true顯示result1,false顯示result2。

     

    邏輯運算有:and(或&&)、or(或!!)、not(或!)。一些例子為:
    運算式 結果
    #{true and false} false
    #{true or false} true
    #{not true} false

     

    關係運算有:小於Less-than (< or lt)、大於Greater-than (> or gt)、小於或等於Less-than-or-equal (<= or le)、大於或等於Greater-than-or-equal (>= or ge)、等於Equal (== or eq)、不等於Not Equal (!= or ne),由英文名稱可以得到lt、gt等運算子之縮寫詞,以下是Tomcat的一些例子:
    運算式 結果
    #{1 < 2} true
    #{1 lt 2} true
    #{1 > (4/2)} false
    #{1 > (4/2)} false
    #{4.0 >= 3} true
    #{4.0 ge 3} true
    #{4 <= 3} false
    #{4 le 3} false
    #{100.0 == 100} true
    #{100.0 eq 100} true
    #{(10*10) != 100} false
    #{(10*10) ne 100} false

     

    左邊是運算子的使用方式,右邊的是運算結果,關係運算也可以用來比較字元或字串,按字典順序來決定比較結果,例如:
    運算式 結果
    #{'a' < 'b'} true
    #{'hip' > 'hit'} false
    #{'4' > 3} true

     

    EL運算子的執行優先順序與Java運算子對應,如果有疑慮的話,也可以使用括號()來自行決定先後順序。

     




    周行 2008-05-22 12:38 發表評論

    文章來源:http://www.tkk7.com/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html
    posted @ 2008-05-22 12:38 jwebee 閱讀(171) | 評論 (0)編輯 收藏

    在JSF中是根據faces-config.xml中<navigation-rule>設定,以決定在符合的條件成立時,該連結至哪一個頁面,一個基本的設定如下:
     
    ....
    <navigation-rule>
    <from-view-id>/pages/index.jsp</from-view-id>
    <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/pages/welcome.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
    <from-outcome>failure</from-outcome>
    <to-view-id>/pages/index.jsp</to-view-id>
    </navigation-case>
    </navigation-rule>
    ....

     

    對於JSF,每一個視圖(View)都有一個獨特的識別(identifier),稱之為View ID,在JSF中的View ID是從Web應用程式的環境相對路徑開始計算,設定時都是以/作為開頭,如果您請求時的路徑是/pages/index.faces,則JSF會將副檔名改為/pages/index.jsp,以此作為view-id。

     

    在<navigation-rule>中的<from-view-id>是個選擇性的定義,它規定了來源頁面的條件,<navigation-case>中定義各種導覽條件,<from-outcome>定義當表單結果符合的條件時,各自改導向哪一個目的頁面,目的頁面是在<to-view-id>中定義。

     

    您還可以在<navigation-case>中加入<from-action>,進一步規範表單結果必須根據哪一個動作方法(action method),當中是使用 JSF Expression Language 來設定,例如:
     
    ....
    <navigation-rule>
    <from-view-id>/pages/index.jsp</from-view-id>
    <navigation-case>
    <from-action>#{user.verify}</from-action>
    <from-outcome>success</from-outcome>
    <to-view-id>/pages/welcome.jsp</to-view-id>
    </navigation-case>
    ....
    </navigation-rule>
    ....

     

    在導航時,預設都是使用forward的方式,您可以在<navigation-case>中加入一個<redirect/>,讓JSF發出讓瀏覽器重新導向(redirect)的header,讓瀏覽器主動要求新網頁,例如:
     
    ....
    <navigation-rule>
    <from-view-id>/pages/index.jsp</from-view-id>
    <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/pages/welcome.jsp</to-view-id>
    <redirect/>
    </navigation-case>
    ....
    </navigation-rule>
    ....

     

    您的來源網頁可能是某個特定模組,例如在/admin/下的頁面,您可以在<from-view-id>中使用wildcards,也就是使用 * 字元,例如:
     
    ....
    <navigation-rule>
    <from-view-id>/admin/*</from-view-id>
    <navigation-case>
    <from-action>#{user.verify}</from-action>
    <from-outcome>success</from-outcome>
    <to-view-id>/pages/welcome.jsp</to-view-id>
    </navigation-case>
    ....
    </navigation-rule>
    ....

     

    在上面的設定中,只要來源網頁是從/admin來的,都可以開始測試接下來的<navigation-case>。

     

    <from-view-id>如果沒有設定,表示來源網頁不作限制,您也可以使用 * 顯式的在定義檔中表明,例如:
     
    ....
    <navigation-rule>
    <from-view-id>/*</from-view-id>
    <navigation-case>
    ....
    </navigation-rule>
    ....

     

    或者是這樣:
     
    ....
    <navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
    ....
    </navigation-rule>
    ....




    周行 2008-05-22 12:36 發表評論

    文章來源:http://www.tkk7.com/zhouxing/archive/2008/05/22/ConfigNavigationRule.html
    posted @ 2008-05-22 12:36 jwebee 閱讀(140) | 評論 (0)編輯 收藏

    第一個JSF程式 中,我們簡單的定義了頁面的流程由 index.jsp 到 welcome.jsp,接下來我們擴充程式,讓它可以根據使用者輸入的名稱與密碼是否正確,決定要顯示歡迎訊息或是將使用者送回原頁面進行重新登入。

     

    首先我們修改一下UserBean:
    • UserBean.java
     
    package onlyfun.caterpillar;

    public class UserBean {
    private String name;
    private String password;
    private String errMessage;

    public void setName(String name) {
    this.name = name;
    }

    public String getName() {
    return name;
    }

    public void setPassword(String password) {
    this.password = password;
    }

    public String getPassword() {
    return password;
    }

    public void setErrMessage(String errMessage) {
    this.errMessage = errMessage;
    }

    public String getErrMessage() {
    return errMessage;
    }

    public String verify() {
    if(!name.equals("justin") ||
    !password.equals("123456")) {
    errMessage = "名稱或密碼錯誤";
    return "failure";
    }
    else {
    return "success";
    }
    }
    }

     

    在UserBean中,我們增加了密碼與錯誤訊息屬性,在verify()方法中,我們檢查使用者名稱與密碼,它傳回一個字串,"failure"表示登入錯誤,並會設定錯誤訊息,而"success"表示登入正確,這個傳回的字串將決定頁面的流程。

     

    接下來我們修改一下 faces-config.xml 中的頁面流程定義:
    • faces-config.xml
     
    <?xml version="1.0"?>
    <!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>/pages/index.jsp</from-view-id>
    <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/pages/welcome.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
    <from-outcome>failure</from-outcome>
    <to-view-id>/pages/index.jsp</to-view-id>
    </navigation-case>
    </navigation-rule>

    <managed-bean>
    <managed-bean-name>user</managed-bean-name>
    <managed-bean-class>
    onlyfun.caterpillar.UserBean
    </managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    </faces-config>

     

    根據上面的定義,當傳回的字串是"success"時,將前往 welcome.jsp,如果是"failure"的話,將送回 index.jsp。

     

    接下來告訴網頁設計人員Bean名稱與相關屬性,以及決定頁面流程的verify名稱,我們修改 index.jsp 如下:
    • index.jsp
     
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@page contentType="text/html;charset=Big5"%>
    <html>
    <head>
    <title>第一個JSF程式</title>
    </head>
    <body>
    <f:view>
    <h:form>
    <h3>請輸入您的名稱</h3>
    <h:outputText value="#{user.errMessage}"/><p>
    名稱: <h:inputText value="#{user.name}"/><p>
    密碼: <h:inputSecret value="#{user.password}"/><p>
    <h:commandButton value="送出"
    action="#{user.verify}"/>
    </h:form>
    </f:view>
    </body>
    </html>

     

    當要根據verify運行結果來決定頁面流程時,action屬性中使用 JSF Expression Language "#{user.verify}",如此JSF就知道必須根據verify傳回的結果來導航頁面。

     

    <h:outputText>可以取出指定的Bean之屬性值,當使用者因驗證錯誤而被送回原頁面時,這個錯誤訊息就可以顯示在頁面上。


    周行 2008-05-22 12:35 發表評論

    文章來源:http://www.tkk7.com/zhouxing/archive/2008/05/22/SimpleNavigation.html
    posted @ 2008-05-22 12:35 jwebee 閱讀(135) | 評論 (0)編輯 收藏

    現在可以開發一個簡單的程式了,我們將設計一個簡單的登入程式,使用者送出名稱,之後由程式顯示使用者名稱及歡迎訊息。

     

    程式開發人員

    先看看應用程式開發人員要作些什麼事,我們撰寫一個簡單的JavaBean:
    • UserBean.java
     
    package onlyfun.caterpillar;

    public class UserBean {
    private String name;

    public void setName(String name) {
    this.name = name;
    }

    public String getName() {
    return name;
    }
    }

     

    這個Bean將儲存使用者的名稱,編譯好之後放置在/WEB-INF/classes下。

     

    接下來設計頁面流程,我們將先顯示一個登入網頁/pages/index.jsp,使用者填入名稱並送出表單,之後在 /pages/welcome.jsp中顯示Bean中的使用者名稱與歡迎訊息。

     

    為了讓JSF知道我們所設計的Bean以及頁面流程,我們定義一個/WEB-INF/faces-config.xml:
    • faces-config.xml
     
    <?xml version="1.0"?>
    <!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>/pages/index.jsp</from-view-id>
    <navigation-case>
    <from-outcome>login</from-outcome>
    <to-view-id>/pages/welcome.jsp</to-view-id>
    </navigation-case>
    </navigation-rule>

    <managed-bean>
    <managed-bean-name>user</managed-bean-name>
    <managed-bean-class>
    onlyfun.caterpillar.UserBean
    </managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    </faces-config>

     

    在<navigation-rule>中,我們定義了頁面流程,當請求來自<from-view- id>中指定的頁面,並且指定了<navigation-case>中的<from-outcome>為login時,則會將請求導向至<to-view-id>所指定的頁面。

     

    在<managed-bean>中我們可以統一管理我們的Bean,我們設定Bean物件的存活範圍是session,也就是使用者開啟瀏覽器與程式互動過程中都存活。

     

    接下來要告訴網頁設計人員的資訊是,他們可以使用的Bean名稱,即<managed-bean-name>中設定的名稱,以及上面所定義的頁面流程。

     

    網頁設計人員

     

    首先網頁設計人員撰寫index.jsp網頁:
    • index.jsp
     
    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@page contentType="text/html;charset=Big5"%>
    <html>
    <head>
    <title>第一個JSF程式</title>
    </head>
    <body>
    <f:view>
    <h:form>
    <h3>請輸入您的名稱</h3>
    名稱: <h:inputText value="#{user.name}"/><p>
    <h:commandButton value="送出" action="login"/>
    </h:form>
    </f:view>
    </body>
    </html>

     

    我們使用了JSF的core與html標籤庫,core是有關於UI元件的處理,而html則是有關於HTML的進階標籤。

     

    <f:view>與<html>有類似的作用,當您要開始使用JSF元件時,這些元件一定要在<f: view>與</f:view>之間,就如同使用HTML時,所有的標籤一定要在<html>與< /html>之間。

     

    html標籤庫中幾乎都是與HTML標籤相關的進階標籤,<h:form>會產生一個表單,我們使用<h: inputText>來顯示user這個Bean物件的name屬性,而<h:commandButton>會產生一個提交按鈕,我們在action屬性中指定將根據之前定義的login頁面流程中前往welcome.jsp頁面。

     

    網頁設計人員不必理會表單傳送之後要作些什麼,他只要設計好歡迎頁面就好了:
    • welcome.jsp
     
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@page contentType="text/html;charset=Big5"%>
    <html>
    <head>
    <title>第一個JSF程式</title>
    </head>
    <body>
    <f:view>
    <h:outputText value="#{user.name}"/> 您好!
    <h3>歡迎使用 JavaServer Faces!</h3>
    </f:view>
    </body>
    </html>

     

    這個頁面沒什麼需要解釋的了,如您所看到的,在網頁上沒有程式邏輯,網頁設計人員所作的就是遵照頁面流程,使用相關名稱取出資料,而不用擔心實際上程式是如何運作的。

     

    接下來啟動Container,連接上您的應用程式網址,例如:http://localhost: 8080/jsfDemo/pages/index.faces,填入名稱並送出表單,您的歡迎頁面就會顯示了。


    周行 2008-05-22 12:34 發表評論

    文章來源:http://www.tkk7.com/zhouxing/archive/2008/05/22/FirstJSF.html
    posted @ 2008-05-22 12:34 jwebee 閱讀(133) | 評論 (0)編輯 收藏

         摘要:   閱讀全文

    周行 2008-05-22 12:32 發表評論

    文章來源:http://www.tkk7.com/zhouxing/archive/2008/05/22/IntroduceJSF.html
    posted @ 2008-05-22 12:32 jwebee 閱讀(155) | 評論 (0)編輯 收藏

         摘要: JavaServer Faces [http://java.sun.com/j2ee/javaserverfaces/] 於2004年三月1.0版正式提出,清楚的將Web應用程式的開發者劃分了三個角色:網頁設計人員、應用程式設計人員以及UI元件開發人員。從使用的角度來看,網頁設計人員與應用程式設計人員可以他們所熟悉的方式開發程式,而不用侵入彼此的工作範圍,而UI元件開發人員可以獨立的開發個別元件,細節的部份留給了他們來處理。  閱讀全文

    周行 2008-05-22 12:31 發表評論

    文章來源:http://www.tkk7.com/zhouxing/archive/2008/05/22/javaserverfaces.html
    posted @ 2008-05-22 12:31 jwebee 閱讀(96) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲理论精品午夜电影| 亚洲处破女AV日韩精品| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | 亚洲avav天堂av在线网爱情| 久久久久av无码免费网| 4444亚洲国产成人精品| 性短视频在线观看免费不卡流畅| 亚洲香蕉久久一区二区| 大陆一级毛片免费视频观看i| 亚洲国产精品久久久久秋霞小| 免费一看一级毛片| eeuss影院www天堂免费| 亚洲成AV人片一区二区| 亚洲精品视频在线观看免费| 午夜在线a亚洲v天堂网2019| 日韩高清免费观看| av午夜福利一片免费看久久| 亚洲AV无码一区二区三区DV| 24小时在线免费视频| 亚洲国产精品无码中文lv| 亚洲高清无码综合性爱视频| 中文字幕久精品免费视频| 亚洲经典在线中文字幕| 免费观看的av毛片的网站| ssswww日本免费网站片| 亚洲国产成人久久综合碰碰动漫3d| av无码久久久久不卡免费网站| 色综合久久精品亚洲国产| 三上悠亚亚洲一区高清| 国产成人精品免费视频动漫| 国产精品亚洲av色欲三区| 亚洲AV永久无码区成人网站| 成人免费视频试看120秒| xxxxxx日本处大片免费看| 亚洲欧洲日产国码在线观看| 四虎影视永久免费观看网址| 国产精品视频白浆免费视频| 亚洲欧洲无码一区二区三区| 亚洲乱码无码永久不卡在线 | 国产乱弄免费视频| 99xxoo视频在线永久免费观看|