Practical_RichFaces要点Chapter02

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"/>



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gengv/archive/2009/06/05/4246303.aspx

你可能感兴趣的:(Ajax,UI,servlet,Richfaces,JSF)