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

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

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

    新的起點 新的開始

    快樂生活 !

    深入淺出JSF2系列一 最酷的特性 支持AJAX.

      隨著JSF2規(guī)范通過,JSF2已經(jīng)慢慢進入我們的視線,本系列以Sun 推薦實現(xiàn)JSF2-Mojarra 為基礎(chǔ),來深入淺出看看JSF2給我們帶來了什么。
      首先看看最酷的特性,支持AJAX。
      JSF是基于組件的web Framework,本身有生命周期控制,在JSF1.2的Spec中,沒有支持AJAX,而為了提高Web的可用性,AJAX又是必須的。怎么做呢?Oracle的ADF Faces ,Apache 的MyFaces 以及IceFaces等個自有各自的實現(xiàn),其中ADF Faces和MyFace提出 PPR(Partial Page Rendering)局部渲染技術(shù),其實在本質(zhì)上就是AJAX。 通過一個事件比如CommandButton CommandLink 等刷新局部需要更改的頁面,而不是整個頁面。這些實現(xiàn)雖然能夠解決問題,但畢竟不是規(guī)范不是統(tǒng)一的實現(xiàn),導(dǎo)致JSF的開發(fā)學(xué)習(xí)成本提高。JSF2面對這種局面,在規(guī)范中明確指出JSF2支持AJAX。
            下面的例子來自Mojarra Samlple,看看JSF2中AJAX的使用:
        
    1. 準備條件:
         從https://javaserverfaces.dev.java.net下載jSF2 jsf-api.jar  jsf-impl.jar
    2.  選擇熟悉的IDE和JEE 服務(wù)器,本文為Eclipse 和JBoss。
    3.  創(chuàng)建Web工程,導(dǎo)入jsf-api.jar  jsf-impl.jar到lib中。
    4.  拷貝samples\basic-ajax
    5.  Run count.xhtml

    分析AJAX調(diào)用:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h
    ="http://java.sun.com/jsf/html">
    <h:head>
        
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
        
    <title>Ajax</title>
    </h:head>
    <h:body>
        
    <h:form id="form1" prependId="false">
            <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
            <h:outputStylesheet name="stylesheet.css"/>
            
    <h:outputText id="out1" value="#{count.count}"/>
            
    <br/>
             
    <h:outputText id="test1" value="otherValue"/>
             
    <h:outputText id="test" value="#{count.countStr}"/>
            
    <br/>
            
    <!-- Increment the counter on the server, and the client -->
            
    <h:commandButton id="button1" value="Count"
                             onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'out1'}); return false;"/>
            <br/>
            
    <!-- Resets the counter, doesn't refresh the page -->
            <h:commandButton id="reset" value="reset"
                                onclick
    ="jsf.ajax.request(this, event, {execute:'reset', render: 'out1'}); return false;"
                                actionListener
    ="#{count.reset}"/>
            
    <h:messages/>
        
    </h:form>
      
    </h:body

     JSF2使用XHTML來表示頁面。在頁面中,引入jsf.js. 然后在button1的Onlick事件中AJAX請求Server  jsf.ajax.request(this, event, {execute: this.id, render: 'out1'}). 點擊后,僅僅刷新 id為out1d的outputText組件,而不是真?zhèn)€頁面。

    看看BackBean的代碼:

    package net.blogjava.vincent.basicajax;

    import javax.faces.event.ActionEvent;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import java.io.Serializable;

    @ManagedBean(name 
    = "count")
    @SessionScoped
    public class Count implements Serializable {

        
    private static final long serialVersionUID = 6499154494910177344L;    

        Integer count 
    = 0;
        String  countStr
    ="";
        
        
    public String getCountStr(){
            
         
    return ""+count;
        }


        
    public Integer getCount() {
            
    return count++;
        }


        @SuppressWarnings(
    {"UnusedDeclaration"})
        
    public void reset(ActionEvent ae) {
            count 
    = 0;
        }

    }

    首先看到JSF2 不需要XML配置文件,通過注釋指定Backeban 名字已經(jīng)Sceope。
    當點擊button1,局部刷新id為out1d的outputText組件,而id 為test的outputText不會變化。真正做多局部刷新,如下圖:



    點擊CountButton時,第一個OutputText 值一直在曾加,而下面的沒有變化,而真?zhèn)€頁面刷新時,兩個值在變化。

    總結(jié):
           通過及其簡單的例子說明了JSF2 AJAX特性。我們也可通過該特性實現(xiàn)很炫的功能。相對于PPR,該實現(xiàn)更自由,我們一個在任何組件上調(diào)用AJAX,而不像目前PPR只在先對幾個組件上。 未完 接下來的更精彩!!


    posted on 2009-07-19 12:25 advincenting 閱讀(3612) 評論(0)  編輯  收藏 所屬分類: java EE

    公告

    Locations of visitors to this pageBlogJava
  • 首頁
  • 新隨筆
  • 聯(lián)系
  • 聚合
  • 管理
  • <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統(tǒng)計

    常用鏈接

    留言簿(13)

    隨筆分類(71)

    隨筆檔案(179)

    文章檔案(13)

    新聞分類

    IT人的英語學(xué)習(xí)網(wǎng)站

    JAVA站點

    優(yōu)秀個人博客鏈接

    官網(wǎng)學(xué)習(xí)站點

    生活工作站點

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 131美女爱做免费毛片| 国产亚洲精品拍拍拍拍拍| 国产亚洲视频在线| 亚洲真人无码永久在线| 999任你躁在线精品免费不卡| 精品亚洲成A人无码成A在线观看| 免费一级毛片不卡不收费| 最新国产乱人伦偷精品免费网站 | 综合亚洲伊人午夜网 | 亚洲综合亚洲综合网成人| 无码av免费一区二区三区试看| 亚洲一区二区无码偷拍| 国产aⅴ无码专区亚洲av麻豆| 大地资源免费更新在线播放| 亚洲阿v天堂在线2017免费| 亚洲免费二区三区| 亚洲中文字幕在线观看| 岛国大片免费在线观看| 国内精品久久久久影院免费 | 国产免费不卡视频| 国产大片免费天天看| 亚洲成av人片不卡无码| 国产亚洲精久久久久久无码AV| 日韩一区二区a片免费观看| a级毛片免费高清毛片视频| 18禁亚洲深夜福利人口| 久久久久亚洲精品无码蜜桃| 久久久久亚洲AV成人网人人软件| 在线看片无码永久免费视频| 三上悠亚在线观看免费| 国产精品亚洲专区一区| 亚洲一级毛片免费观看| 亚洲国产成人久久精品影视| 亚洲国产精品专区在线观看| 成年轻人网站色免费看| 最近中文字幕mv免费高清视频8 | 91免费资源网站入口| 久久久国产精品无码免费专区| 本道天堂成在人线av无码免费| 亚洲av色香蕉一区二区三区 | 无码精品一区二区三区免费视频|