`
wangzl2222
  • 浏览: 150996 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JSF Chapter03

阅读更多
本章主要包括三方面内容:

· 发送 Ajax Request

· 实现 Partial-Page 更新

· 了解什么数据将会被 process

 

 

1.       发送 Ajax Request

 

1)  四个 RichFaces 控件可以发送 Ajax Request 并允许 Partial-Page 更新

• <a4j:commandLink>

• <a4j:commandButton>

• <a4j:support>

• <a4j:poll>

 

2)  <a4j:commandLink> 与 <a4j:commandButton>

与标准的 <h:commandLink> 与 <h:commandButton> 非常相似,增加的功能:

• reRender 属性,用于指定哪些控件需要 Partial-Page 更新;

• 对于 Partial-Page 更新, action 方法的返回值应为 null 。 Response 将被用来更新 Browser 的 DOM 。

 

3)  <a4j: support>

• <a4j: support> 应该作为标准 JSF 控件的直接子控件( Direct Child )来使用。

• 关键属性 event ,用来指定哪个 DHTML event 将会引发 Ajax Request 。(实际上, <a4j:commandLink> 与 <a4j:commandButton> 是使用了“ onClick ” DHTML event 来引发 Ajax Request 。

• 至于能够指定哪些 DHTML 事件,取决于父控件能够支持哪些。

• 当在页面上混合使用 <a4j: support> 和 JavaScript 代码时,有可能导致不确定的结果,因为 JavaScript 代码有可能比 <a4j: support> “抢占先机”。

• 可以同时组合使用多个 <a4j:support> 以分别应对不同的 DHTML event ,比如 onClick 、 onkeyup 、 onkeydown 等。

 

4)  <a4j:poll>

• interval          指定多长时间向 Server 发送一次 Ajax Request ;

• enabled          是否启动自动发送 Ajax Request 功能;

• reRender              页面的哪些控件(部分)要被刷新;

将 <a4j:poll> 放置在一个独立的 form 里,这样在发送 Request 的时候,其他 form 里面的 Field 将不会被发送。

 

5)  limitToList 属性

• 能够引发 Ajax Request 的四种控件都有 limitToList 这个属性;

• 当 limitToList 设为 true 的时候,只有当前控件的 reRender 里面的控件会被刷新;

• 即使 <a4j:outputPanel ajaxRendered=”true”> 也不会被刷新。

 

 

2.       实现 Partial-Page 更新

 

1)  两种方法:

• reRender 属性

• <a4j:outputPanel ajaxRendered=”true”>

 

2)  使用 reRender 属性

• 通常是逗号分隔的 ID 列表;

• 当 reRender 指向一个容器类控件的时候,该容器控件中的子控件也将被刷新;

• 接受 EL 表达式,如 #{profile.renderList} ,以实现 reRender 控件列表的动态刷新;

• 接受 4 种格式: Set 、 List 、 String[] 、 String (逗号分隔 ID 列表)。

 

【注意】

EL 表达式只在 Render Response 阶段之前被解析,也就意味着,可以在 action 或 actionListener 里更新 reRender 控件列表。

通常情况下,页面里的 EL 表达式应该在 Update Model Value 阶段被解析( Update Model Value 阶段在 Invoke Application 阶段之前)。而此处, EL 表达式只在 Render Response 阶段之前被解析( Render Response 阶段在 Invoke Application 阶段之后),也就留给我们机会在 Invoke Application 阶段的 action 或 actionListener 里对 reRender 控件列表进行修改。如修改 #{profile.renderList} 里面的的 renderList 集合对象。

 

3)  使用 <a4j:outputPanel>

• <a4j:outputPanel> 与 <h:panelGroup> 很相似,是一个容器类的控件;它的 ID 也可以被添加到其他控件的 reRender 属性里。

• 当 <a4j:outputPanel> 的 ajaxRendered 属性被设为 true ,则其内部的控件总会被刷新。

 

 

3.       了解什么数据将会被 process

 

1)  使用 <a4j:region>

• 可以使用 <a4j:region> 来指定哪些控件将被 process ( Process 包括解码 decoding 、转换 conversion 、验证 validation 、更新模型值 model updating );

• 请注意,整个 Form 还是会被提交,只是在 region 中的控件会被 process ;

• 如果未指定 region ,则整个页面将作为一个 region ,也就意味着整个 form 被 process ;

• 对于嵌套 region ,当外部 region 里的 ajax 控件引发 Request 的时候,内部 region 里的控件也将一起被 process ;而当内部 region 里的 ajax 控件引发 Request 的时候,外部 region 里的控件则不会随之一起 process ;

 

【注意】切勿将 process 和 reRender 相混淆

<a4j:region> 只是表明哪些控件被 process (解码 decoding 、转换 conversion 、验证 validation 、更新模型值 model updating );而 Partial-Page 刷新还是得靠 reRender 和 <a4j:outputPanel> 负责。两者之间,概念不同。

 

2)  使用 ajaxSingle 属性

• 将 ajaxSingle 属性设为 true ,等同于将单个控件包装在 <a4j:region> 中。如:

<h:inputText value="#{profile.age}">

<a4j:support event="onblur" reRender="userInfo" ajaxSingle="true">

</h:inputText>

等同于

<a4j:region>

<h:inputText value=”#{profile.age}”>

<a4j:support event=”onblur” reRender=”userInfo”>

</h:inputText>

</a4j:region>

 

• 对于单独的 <a4j:commandButton> 或 <a4j:commandLink> , ajaxSingle 也可以设为 true ,也就是只有这个控件被 process 。

 

3)  使用 process 属性

• process 属性用于设置 region 外的控件随 region 内的控件一起 process ;

• 接受 4 种格式: Set 、 List 、 String[] 、 String (逗号分隔 ID 列表)。
from:http://blog.csdn.net/gengv/archive/2009/06/05/4246420.aspx
分享到:
评论

相关推荐

    精通JSF—基于EJBHibernateSpring开发实践视频教程

    资源名称:精通JSF—基于EJBHibernateSpring开发实践视频教程资源目录:【】chapter13_code【】Jsf第七章【】JSF第二章【】Jsf第五章【】Jsf第八章【】Jsf第六章【】Jsf第十三章【】Jsf第十五章【】Jsf第十六章【】...

    jsf权威教程源码

    首先,我们可以看到文件名中有`chapter9_details.html`,这可能是一个关于第九章详细内容的HTML文档,通常这样的文件会包含讲解和示例代码的解释,可能涵盖了JSF组件的使用、事件处理、转换和验证等关键主题。...

    jsf完全参考手册源代码

    在"chapter16"这个文件中,可能涵盖了JSF的高级主题,例如: - **自定义组件**:如果开发者需要扩展JSF的默认组件库,可以创建自定义组件,这涉及到UIComponent子类的继承和渲染过程的理解。 - **导航管理**:JSF的...

    jsf完全参考手册中的源代码

    下面我们将详细探讨JSF的核心概念、关键组件以及`build.properties.sample`和`chapter05`可能包含的内容。 **JSF框架概述:** JSF是Java EE的一部分,旨在简化Web开发,通过提供UI组件、事件处理和数据绑定等功能来...

    精通JSF基于EJB HibernateSpring整合天发与项目实践 书本源码

    书本源码中的各个章节代码文件,如chapter3_code到chapter10_code,分别对应书中各章节的实例代码。这些代码实例通常会展示如何在实际项目中应用JSF、EJB、Hibernate和Spring进行整合,包括但不限于以下知识点: 1....

    Java.EE.7.Development.with.NetBeans.8

    Chapter 3: JSF Component Libraries Chapter 4: Interacting with Databases through the Java Persistence API Chapter 5: Implementing the Business Tier with Session Beans Chapter 6: Contexts and ...

    使用JSP开发Web应用系统(JSP) Chapter3

    在本章"使用JSP开发Web应用...在后续章节中,你还会接触到更多高级主题,如EL(Expression Language)、JSF(JavaServer Faces)以及现代Web框架如Spring MVC的使用。持续学习和实践,将使你成为一位熟练的Web开发者。

Global site tag (gtag.js) - Google Analytics