https://javaserverfaces.dev.java.net/nonav/docs/2.0/jsdocs/symbols/jsf.ajax.html 早些時候,Facelets 的初次登場成為了 JavaServer Pages (JSP) 的強有力候補。 然後出現了 Rich Faces,一個出色的 JSF Ajax 庫;接著是 ICEFaces,將 Ajax 和 JSF 聯合起來的新穎方法;還有 Seam、Spring Faces、Woodstock 組件、JSF Templating,等等。所有這些開源 JSF 項目都是由開發人員根據自己需要的功能構建的。JSF 2.0 專家組實際上對來自這些開源項目的最佳特性進行了標準化。儘管 JSF 2 規範確實是由一些理論家編寫的,但它也受到了來自實際開發的創新的驅動。 回想起來,專家組的工作其實非常輕鬆,因為我們正站在巨人的肩膀上,比如 Gavin King (Seam)、Alexandr Smirnov (Rich Faces)、Ted Goddard (ICEFaces) 和 Ken Paulson (JSF Templating)。實際上,所有這些巨人都是 JSF 2 專家組的成員。 <f:ajax><h:outputScript library="javax.faces" name="jsf.js" target="head"/> .... <h:commandButton id="post" style="padding:3px;width:100px;" value="Submit" onclick="jsf.ajax.request(this, event, {execute:'form', render: 'after'}); return false;" actionListener="#{count.countIt}"/> JSF 2.0 <h:commandButton id="post" style="..." value="Submit"> <f:ajax event="click" execute="form" render="after" /> ... execute:』form』是表示提交的是當前id為form的表單,render:』after』表示只更新id為after的頁面元素。 javascripts 所有的過程都已經有實現專家組給我們封裝起來了,容易出錯的javascript調用的事情交給專家們去做吧,我們只來關注業務實現。 <p:ajax> / <p:ajaxState>f:ajax
SampleJSF Facelet (View) <h:form> ManagedBean (Controller) @ManagedBean Google AJAX Librarys APIProject, http://code.google.com/apis/ajaxlibs/ http://feidaodalian.javaeye.com/category/72761 http://www-01.ibm.com/software/tw/sf/article/20070823_rational.html <h:outputScript name="jsf.js" library="javax.faces" target="head"/> <h:outputText id="randomID" value="#{random.random}"/> <h:commandButton id="buttonID" value="Random" onclick="jsf.ajax.request(this, event,{execute: this.id, render: 'randomID'}); return false;"/> <h:outputText id="randomID1" value="#{random.random}"/> <h:commandButton id="buttonID1" value="Random"> <f:ajax execute="formID1:buttonID1 formID1:randomID1" render="formID1:randomID1"/> </h:commandButton> <h:outputText id="randomID2" value="#{random.random}"/> <br/> <h:outputText id="randomID3" value="#{random.random}"/> <h:commandButton id="buttonID2" value="Random"> <f:ajax render="randomID3" /> </h:commandButton> |