ajax4jsf

来源:互联网 发布:淘宝买到假药怎么举报 编辑:程序博客网 时间:2024/09/21 09:26
解压 ajax4jsf.zip 文件.
复制 ajax4jsf.jar and oscache-2.2.jar 到程序的 WEB-INF/lib 文件夹下.
把下面的内容添加到你的程序的 WEB-INF/web.xml 文件中:
           <filter>
           <display-name>Ajax4jsf Filter</display-name>
           <filter-name>ajax4jsf</filter-name>
           <filter-class>org.ajax4jsf.Filter</filter-class>
           </filter>
           <filter-mapping>
           <filter-name>ajax4jsf</filter-name>
           <servlet-name>Faces Servlet</servlet-name>
           <dispatcher>REQUEST</dispatcher>
           <dispatcher>FORWARD</dispatcher>
           <dispatcher>INCLUDE</dispatcher>
           </filter-mapping>
        
添加下面的内容:
   <%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>        
到你每个使用Ajax功能的JSP页面中.

         <f:view>
           <h:form>
             <h:inputText size="50" value="#{bean.text}" >
               <a4j:support event="onkeyup" reRender="rep"/>
             </h:inputText>
             <h:outputText value="#{bean.text}" id="rep"/>
           </h:form>
         </f:view> 

 

1.发送一个 AJAX 请求
    
     标签: 
<a4j:commandButton>
<a4j:commandLink>
<a4j:support>

     标签属性: 
reRender: Ajax响应到来时重新渲染(reRendered)组件  一般值等于组件的id
<a4j:support event="onkeyup" reRender="rep" />
...
<h:outputText value="#{bean.text}" id="rep"/>

RequestDelay: 用来调节请求的频率,即响应此事件延迟的秒数
EventsQueue: 储存下一个请求的队列的名字. 队列帮助阻止下一个请求知道当前的处理完. 
LimitToList: 用来控制更新的区域. 设置为true将更新仅在reRender list中的区域, 如果为false,将更新所有Output Panels区域. (
<f:view> 和 </f:view> tags 中的内容在默认值的情况下认为是ajax区域)
ajaxSingle: 如果设置为false用来指定发送请求的区域,如果为true则发送整个区域


2.通过使用<a4j:region> tag你可以在一个JSF页面中定义多个Ajax区域 
如果你希望渲染ajax响应以外的区域,那么renderRegionOnly属性值应该设置为false.否则ajax更新被限制在活动区域的元素中.
<a4j:region renderRegionOnly="true">

 

 

在发送请求前自定义JS. OnSubmit attribute
     
<h:inputText id="i" value="#{beanText.kennung}">    
         
<a4j:support event="onfocus" onsubmit="doSomething();" reRender="panelToReRender"/>                
     
</h:inputText>
doSomething()
" 函数将在 Ajax 请求前执行.
另外如果该函数返回 "false" - Ajax 请求将不发生.
注意:我们的onsubmit 有点和标准的不一样. 如果你想执行ajax请求,不要返回true   
- 因为 <xxx><a4j:support event="onclick" onsubmit="return true;"> 将被转换为 <xxx onclick="return true; A4J.Submit(.... );" > ,在这种情况下请求将不被发送.

3.Chapter 4. Ajax4JSF 组件库
a4j:ajaxListener 添加一个指定的类作为AjaxEvent的监听器
a4j:keepAlive 该标签通过EL表达式(#
{'+name+'})得到bean, 并且保存该bean到组件树中. 在恢复组件树中,bean被放到request-scope中
a4j:region 该标签定义在AJax请求处理过程中被发送到服务器端解码的部分JSF组件树
a4j:page 该组件呈现一个完全的HTML页面结构。它必须是view root (JSP 
<f:view> tag)的第一个(并且是仅有的一个)子组件. 没有Html代码可以在该组件的外面