Practical_RichFaces要点Chapter02

Chapter02      Quick Start with JBoss RichFaces

 


1.       配置 RichFaces

 

1)        添加 lib CLASSPATH

richfaces-api-3.2.x.jar

richfaces-impl-3.2.x.jar

richfaces-ui-3.2.x.jar

 

2)        配置 web.xml 文件

主要是添加 ajax4jsf Filter

<filter>

<display-name>RichFaces Filter</display-name>

<filter-name>richfaces</filter-name>

<filter-class>org.ajax4jsf.Filter</filter-class>

</filter>

 

<filter-mapping>

<filter-name>richfaces</filter-name>

<servlet-name>Faces Servlet</servlet-name>

<dispatcher>REQUEST</dispatcher>

<dispatcher>FORWARD</dispatcher>

<dispatcher>INCLUDE</dispatcher>

</filter-mapping>

 

可以选择性的设置 SKIN 参数

<context-param>

<param-name>org.richfaces.SKIN</param-name>

<param-value>blueSky</param-value>

</context-param>

 

3)        在页面中添加 taglib 声明

<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>

<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

 

 

2.       部分页面更新( Partial-Page Update

 

指定的控件将会在 Server 上被 render 出来, Browser 接收到 response ,一部分页面就会被更新。换句话说,就是一部分 DOM 会被更新。

 

 

3.       使用 <a4j:support>

 

1)      onkeyup 事件是标准的 DHTML 事件

 

2)      如何使用 < a4j:support>

<a4j:support> 可以添加到任何标准 JSF 控件内部

<a4j:support> 作为 Child 控件添加到 JSF 控件内 并指定一个将要触发 request DHTML 事件 比如 onkeyup

actionListener 属性指定 ActionListener (方法)来应对 DHTML 事件;

reRender 属性用来指定哪些控件将要被更新。

 

在这种情况下,每次 onkeyup 事件都会触发一次 Ajax Request Server 得到 Request ,进入正常的 JSF 生命周期。然后 Ajax 得到 Response 并刷新部分页面。

 

【注意】

对于通常的 <f:message> ,如果不做特别操作,即使把这个 <f:message> ID 加入触发 Ajax Request 的控件的 reRender 属性,当验证出错的时候, <f:message> 也不会被刷新到页面上来。

原因在于, Ajax Request 是根据 ID DOM Tree 中查找控件位置,进行部分刷新的。当第一次载入页面的时候,因为没有错误信息,所以 <f:message> 不会被 render 。但当 Ajax Request 提交的值验证失败产生错误信息的时候, Server 发回的 Response Ajax 接收到, Ajax 按照 ID 去查找控件的 DOM Tree 位置。这是它将无法定位 <f:message> ,因而也就无法刷新出来了。

解决办法有两种:

<f:message> 放在 <h:panelGroup> <a4j:outputPanel> 中,将 <h:panelGroup> <a4j:outputPanel> ID 放到触发 Ajax Request 的控件的 reRender 中。

直接使用 <rich:message> 以代替 <f:message> <rich:message> 实际上就是将 <f:message> 放进 <a4j:outputPanel ajaxRendered=”true”> 中( <a4j:outputPanel ajaxRendered=”true”> 中的控件总是会被刷新的)。

 

 

4.       使用 <a4j:log>

 

<a4j:log> 加入页面,当运行时按下 Ctrl+Shift+L 的时候会弹出一个信息页面窗口,根据你的操作,会自动刷新出 Debug 信息。

可以更改热键,比如: <a4j:log hotkey="D"/>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值