JSF中使用f:ajax標簽無刷新頁面改變數據


   ajax本是用在前端的一種異步請求數據的操作,廣泛用於js中,一般的js框架如jq都有被封裝好的方法,用於發起異步請求操作。異步操作可以增強用戶體驗和操作,越來越多的程序都在使用ajax。JSF的facelets內置了一個ajax標簽,可用於簡單的ajax操作。

  f:ajax 有幾個常用屬性,分別是:event、listener、render。

1、event:event 對應一個js事件名,該事件名省略了開頭的”on“字符,例如點擊事件是onclick,那么只需要填入click即可。類似事件還有obblur、onkeyup、onmouseover等等。

2、listener:lisetener為指定一個ajax事件,當前事件需要執行bean中的什么方法。實際調用bean中的方法即可。

3、render:render內填入一個需要渲染的組件id。ajax實現異步操作的目的就是無刷新頁面顯示數據,那么當返回數據時,這些數據需要顯示在那個區域,給該區域指定一個  id,和render關聯即可,這里可以填入多個id,用空格隔開。

示例性代碼如下:

a.xhtml:

1 <h:form preparedId="false">
2 <div id="show">#{bean.var}</div>
3 <h:commandButton value="點擊"> 
4     <f:ajax event="click" render="show" listener="#{bean.do}"/>
5 </h:commandButton>
6 </h:form>

bean.java:

 private String var;

public void setVar(String var){
  this.var = var;          
}

public String getVar(){
  return var;  
}

public void do(){
  var="hello";      
}

上面的代碼中,當在頁面點擊按鈕時,會觸發bean中的do方法,進而改變var的值,通過ajax的render屬性指定刷新id為“show”的區域。

 jsf ajax還可以與一組組件關聯起來,形成ajax組,只需要把一組組件內置於ajax標簽內即可,示例性代碼如下:

1 <f:ajax event="click" listener="#{bean.do}">
2     <h:form>
3         <h:commandButton value="click1"/>
4         <h:commandButton value="click2"/>
5         <h:commandButton value="click3">
6              <f:ajax event="blur" lisrener="#{bean.do2}"/>
7         </h:commandButton>
8      <h:form>
9  </f:ajax>        

  以上代碼在第三個按鈕中還用了一個ajax標簽。ajax組件可以這樣嵌套使用,從最近的地方開始執行。

  jsf的ajax操作廣泛用於字段驗證方面,通過事件向bean傳遞數據,一般input類型標簽使用validator屬性指定驗證方法,此驗證方法帶有3個參數,分別是FacesContext、UIComponent和一個Object類型數據,該object即為輸入框內的值。

  ajax還有一個onevent屬性,該屬性只能填入一個js方法。這個js方法會被調用3次,分別是三個狀態:"begin、success、complete",即對於ajax請求的三個狀態:請求之前、呈現響應、成功調用。js方法有一個參數,參數的status屬性為這幾個狀態,是示例性代碼如下:

  

 1 function fun(data){
 2     if(data.status == "begin"){
 3 
 4     }  
 5      if(data.status == "complete"){
 6 
 7     } 
 8     if(data.status == "success"){
 9 
10     }  
11  
12 }

  總結:目前使用到的還不是很多,有些特殊使用方法還沒遇到過,比如有引入jsf的js庫,可以實現更為復雜的ajax操作,傳遞ajax參數等等。以后遇到再詳細了解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM