ICEfaces | |
Dezvoltator | ICEsoft Technologies Inc. |
---|---|
Ultima versiune | 1.8.2 (30 septembrie 2009) |
Repo | [1] http://anonsvn.icesoft.org/repo/[1] |
Sistem de operare | cross-platform |
Platformă | Java EE |
Tip | Ajax, Java, JSF, Framework |
Licență | sursă deschisă, MPL |
Prezență online | |
www.icefaces.org | |
Modifică date / text |
ICEfaces este o extensie a platformei Java Server Faces care permite dezvoltatorilor de aplicații Java Enterprise să creeze aplicații interactive utilizând tehnologiile Ajax, limbajul Java și platforma Java EE. Unul dintre punctele forte ale ICEfaces este integrarea transparentă cu tehnologiile Ajax dar în mod special cu Ajax Push, fiind printre primele platforme cu suport pentru aceste tehnologii.
Scopul principal al ICEfaces este acela de a oferi dezvoltatorilor de aplicații Web o modalitate de a crea interfețe asemănătoare celor clasice Desktop prin intermediul tehnologiilor Ajax fără a fi nevoie ca aceștia să fie expuși complicațiilor dezvoltării de interfețe Ajax în JavaScript.
ICEfaces folosește infrastructura Java EE existentă, dezvoltarea de aplicații nefiind cu nimic diferită față de cea clasică JSF. Însă, ICEfaces extinde funcționalitatea JSF, oferind capabilități Ajax și Ajax Push în mod transparent pentru dezvoltator.
Platforma ICEfaces are la bază trei componente:
Această aplicație simulează o cameră de licitații în timp real, cu o interfață foarte dinamică și chiar un chat integrat. Modulele semnificative sunt scrise în felul următor:
/** * Class used to control the background clock of the entire auction monitor By * queuing a render call every pollInterval (default 1000) milliseconds, this * class allows the auction monitor UI to have ticking clocks In addition this * class will help AuctionBean maintain a list of the number of users online * through incrementUsers and decrementUsers */ public class ClockBean implements Renderable, DisposableBean { private static Log log = LogFactory.getLog(ClockBean.class); private IntervalRenderer clock; private int pollInterval = 1000; private String autoLoad = " "; private PersistentFacesState state = null; ... public void setRenderManager(RenderManager manager) { if (manager != null) { clock = manager.getIntervalRenderer(INTERVAL_RENDERER_GROUP); if (clock.getInterval() != pollInterval) { clock.setInterval(pollInterval); } clock.add(this); clock.requestRender(); } } }
/** * Bean class used to store user information, as well as local information for * messages and viewing information */ public class UserBean implements DisposableBean { ... public UserBean() { SessionRenderer.addCurrentSession("auction"); } ... public void setMessage(String pageMessage) { if (!leaving) { addMessage(pageMessage); } } ... /** * Method to tell the chat state to update everyone in the chat This method * is normally called when a message is added to the log */ private void updateMessageLog() { //move all users to chat list bottom chatState.updateAll(); SessionRenderer.render("auction"); } ... }
|title=
(ajutor)