`
wyh6635
  • 浏览: 29912 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JSF2中轻松使用ajax

阅读更多

1:使用JSF2提供的ajax的理由

       js兼容性:写过web应用的朋友都知道,js在各个浏览器中的不兼容是出了名的,在IE上运行好好的放到firefox下可能没法正常运行,或者相反的情况在firefox下正常运行的代码在IE上无法运行,甚至在IE6下能正常运行的代码在IE8里面不能正常运行,但是JSF2.0中将所有的不一致都隐藏起来了,开发者或者使用者无需关心这些恼人的问题。

       ajax框架的选择:当前有许多流行的ajax框架,如jqueryjsondwr等等,但是这些都必须额外添加支持库而且有些必须进行繁杂的配置,对于注重应用的开发人员来说很不利(别说用那些很多配置的显示你很高手,那都是自我安慰的一种方式,谁不喜欢简单的事情!难不成你用这些理由跟你们老板理论去,那你就等着卷铺盖走人吧!),而JSF2是内置了ajax功能,能满足我们绝大部分的需求,所以可以大大的简化和加速我们项目的进度。

2:最简单的ajax功能

       如今流行的ajax框架非常多,比如jquerydwr等之类的,但是这些ajax框架(或类似脚本库)都是单独提供的,而且使用起来还是相对麻烦,而JSF2提供的ajax功能实现非常简单,甚至一句js代码都不用写就可以完成页面的无刷新功能。

以下是一个非常简单的一个使用JSF2标签并带有ajax功能的代码

<h:commandButton action="#{testAjax.validateUser}">

       <f:ajax render="id1">

</h:commandButton>

我们在上面的例子中并没有看到任何的js代码,其实JSF2标签帮我们封装好了所有的操作,在生成页面的时候会进行相应的处理,具体的属性介绍我们下面的内容会详细讲解。

3:以上的例子只是一个非常简单的功能,能完成一些基本的ajax功能,我们现在编写一个相对完全一点的示例:

<h:commandButton action="#{testAjax.validateUser}">

       <f:ajax render="id1 id2" execute="id3 id4" event="blur" onevent="showFire" />

</h:commandButton>

属性说明:

 

注:此回调函数showFire会被执行三次,但是通过监控软件ajax事件触发后只提交了一次数据请求,所以具体的问题出现在客户端,由于资料相对较少暂时不做解释。

 

属性名称

属性说明

render

页面上需要刷新的元素的id,如果有多个可以用空格隔开,示例中就是有id1 id2,中间使用空格隔开,前提是我们的元素必须要有一个id属性,比如一个输入框<input type="text" id="id1" value=""/>

execute

需要提交给服务器端的参数的id,如果有多个用空格隔开,比如说更新id1时,需要传入一个输入框idid3的元素,那么可以用execute="id3",其实还可以使用@符号来操作,有@this表示当前元素;@form表示此元素所在表单(form)下的所有的元素;@none表示不提交任何元素;@all表示提交页面所有JSF的可提交的元素。

event

ajax事件触发的条件,比如我们上一例子就是使用了event="blur",表示当blur事件发生时触发ajax事件(blur只是举例,可以使用的有action, blur, change, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup, select),如果没有指定则使用默认的事件触发,默认的事件是actionaction其实不是js中有的事件,是指任何方式触发调用,如点击也能触发action事件。

onevent

ajax事件相应完成后执行的js函数,比如说我们上面示例代码有onevent="showFire",这个函数带可以带至多一个参数,这个参数是ajax时间触发后返回的结果DOM对象(并不是我们调用java代码中的方法返回的参数),在ajax事件响应完成后即调用showFire这个函数,示例如下代码

<script type="text/javascript">

       function showFire() {

              alert("回调函数事件已经触发");

       }

</script>

<h:form>

       <h:outputText id="id1" value="#{ajaxTest.number}"/>

       <h:commandButton value="数字增加" action="#{testAjax.count}">

              <f:ajax render="number" onevent="showFire"/>

       </h:commandButton>

</h:form>

...

Java代码

...

@ManagedBean

@ViewScoped

public class AjaxTest implements Serializable {

   

    private int number;

 

    public void count() {

        number++;

    }

       //getter and setter

       ...

}

 

listener

此属性是指ajax事件触发后调用的managedbean的方法,其实作用很明显,比如说我们这里不用按钮之类的标签,只是需要当我们输入某个数据的时候触发一个ajax事件,这个属性就显得很重要了。示例如下:

JSF页面代码

...

    <h:head>

        <title>JSF2.0 ajax测试</title>

        <script type="text/javascript">

            var temp = 0;

            function showFire() {

                alert("响应函数!");

            }

        </script>

    </h:head>

    <h:body>

        <h:form>

            <h:outputText id="id1" value="#{ajaxTest.number}"/>

            <h:inputText>

                <f:ajax render="id1" event="keyup" onevent="showFire" listener="#{ajaxTest.count}"/>

            </h:inputText>

        </h:form>

    </h:body>

...

Java代码

...

@ManagedBean

@ViewScoped

public class AjaxTest implements Serializable {

   

    private int number;

 

    public void count() {

        number++;

    }

       //getter and setter

       ...

}

listener属性的代码作用就是调用AjaxTest类中的count方法,使数字加一,我们也可以延伸一下作用,比如说注册信息的时候,输入的用户名检查是否重复,当我们输入的时候就实时检测即可。

 

分享到:
评论

相关推荐

    ajax4jsf使用中文手册

    Ajax4JSF(全称是Ajax for JavaServer Faces)是一种集成在JavaServer Faces(JSF)框架中的Ajax库,它允许开发者在JSF应用程序中轻松实现异步数据更新,提供更流畅的用户体验。这份中文手册详细介绍了如何将Ajax...

    ajax4jsf实例

    这个框架允许开发者在JSF应用中轻松实现异步数据更新,提升用户界面的交互性和响应性,无需深入学习复杂的JavaScript或Ajax技术。 ### 1. Ajax4JSF简介 Ajax4JSF 是基于JSF 1.x 和 RichFaces 3.x 的一个组件库,...

    ajax4jsf-demo

    "ajax4jsf-demo"项目包含了各种示例页面,展示如何在JSF应用中使用Ajax4JSF库。这些示例可能包括表格的动态排序、分页、局部刷新等,通过这些实例,开发者可以直观地了解如何将Ajax功能引入到JSF应用中。 **5. 开发...

    Ajax4jsf 用户手册

    指南可能包含了在Eclipse、NetBeans或其他常用集成开发环境(IDE)中使用Ajax4jsf的步骤。 ### 8. **Exadel VCP和Ajax4jsf** Exadel VCP可能是指Exadel的版本控制平台,可能与Ajax4jsf的版本管理和发布有关。 ### 9...

    ajax4jsf中文用户指南

    **Ajax请求的发送**:在JSF页面中,你可以使用Ajax4JSF提供的组件,如`a4j:support`或`a4j:commandButton`,来触发Ajax请求。这些组件可以绑定到特定的事件,当事件发生时,会向服务器发送异步请求。 **决定发送...

    ajax4jsf使用中文手册.zip

    2. **简单集成**:Ajax4JSF可以直接与标准JSF 1.x和2.x版本进行无缝集成,开发者可以轻松地在现有JSF项目中引入Ajax4JSF功能。 3. **事件处理**:Ajax4JSF提供了丰富的事件模型,允许开发者精确控制Ajax请求的触发...

    ajax 4jsf用户指南中文版

    - 可应用于现有JSF项目中,通过组件库添加Ajax功能。 #### 二、开始使用Ajax4jsf - **环境需求**: - JDK1.4或更高版本。 - 任何JSF实现。 - Servlet容器。 - **下载与安装**:文档未详细介绍,但通常包括下载...

    ajax4jsf使用手册

    这个框架使得开发者能够轻松地在JSF应用中集成Ajax功能,而无需深入理解底层的JavaScript和XMLHttpRequest技术。 ### 1. Ajax4JSF 的核心概念 - **Ajax 组件**:Ajax4JSF 提供了一系列预定义的UI组件,如`...

    JSF第一步--JSF+Spring+ Hibernate+AJAX编程实践 试读

    在"JSF第一步--JSF+Spring+Hibernate+AJAX编程实践 试读"这本书中,读者可以期待学习如何设置这些技术的集成环境,创建JSF组件,配置Spring容器,理解Hibernate的映射和查询机制,以及如何在JSF中使用AJAX进行异步...

    jsf+facelets+ajax4jsf的全部jar包

    通常,这需要在项目的类路径中添加相应的jar,配置web.xml以启用Facelets和Ajax4jsf,然后在Facelets页面中使用Ajax4jsf的组件和行为。 6. **开发实践**:在实际开发中,开发者可以通过JSF的Managed Beans定义业务...

    JSF+RichFaces(Ajax4jsf)框架示例

    4. **AJAX交互**:如果页面中使用了RichFaces组件,它们会通过Ajax4jsf处理AJAX请求,只更新页面的特定部分,而不是整个页面。 5. **响应**:服务器处理请求并返回更新后的组件状态,这些更新被无缝集成到现有页面中...

    JSF2 技术如何使用及实例

    本文重点介绍 JSF2 的使用方法,特别是如何利用其内置的 Ajax 支持以及如何使用 GMaps4JSF 这个开源库来快速构建具有 Google 地图功能的 JSF 应用程序。 #### 二、JSF2 标签的使用 JSF2 提供了一系列的标签,使得...

    ajax4jsf教程

    3. **faces-config.xml**:在`faces-config.xml`中注册Ajax4JSF的行为组件,以便在JSF页面中使用。 ### 三、Ajax4JSF组件与行为 Ajax4JSF提供了多种预定义的组件和行为,例如: 1. **rich:ajaxEvent**:用于触发...

    Ajax4JSF用户指南

    在使用Ajax4JSF时,你可以轻松地向已有的JSF项目添加Ajax特性。它通过一个组件库实现,允许你在页面级别定义Ajax事件,而不必手动编写JavaScript或替换现有的JSF组件。这种页面范围的Ajax支持使得你可以定义一个触发...

    JSF2新特性以及配置

    在JSF2中引入了许多新特性和改进,极大地提升了开发效率和用户体验。以下将详细介绍JSF2的新特性及其配置。** 1. **Faces Servlet自动注册**:在JSF2中,Faces Servlet不再需要在web.xml中手动配置。它现在会自动...

    ajax4jsf 用户指南

    指南还可能包含如何在各种集成开发环境中配置和使用 Ajax4jsf 的信息。 ### 8. Exadel VCP 和 Ajax4jsf Exadel VCP 可能是与 Ajax4jsf 相关的一个开发工具或版本控制系统。 ### 9. Web 上的资源 最后,提供了在线...

Global site tag (gtag.js) - Google Analytics