Wednesday September 17, 2008
TOTD #45: Ajaxifying Java Server Faces using JSF Extensions
TOTD
#42 explained how to create a simple Java Server Faces
application using NetBeans 6.1 and deploy on GlassFish. In the process
it explained some basic
JSF concepts as well. If you remember, it built an application that
allows you to create a database of cities/country of your choice. In
that application, any city/country combination can be entered twice and
no errors are reported.
This blog entry extends TOTD
#42 and show the list of cities, that have already been
entered,
starting with the letters entered in the text box. And instead of
refreshing the entire page, it uses JSF Extensions
to make an Ajax call to the endpoint and show the list of cities based
upon the text entered. This behavior is similar to Autocomplete
and shows the suggestions in a separate text box.
Let's get started!
| ~/tools >gunzip -c ~/Downloads/jsf-extensions-0.1.tar.gz | tar xvf - |

| <%@taglib prefix="jsfExt" uri="http://java.sun.com/jsf/extensions/dynafaces" %> |

| <jsfExt:scripts /> |


| onkeyup="DynaFaces.fireAjaxTransaction(this, { execute: 'cityName', render: 'city_choices', immediate: true});" |

| <h:outputText id="city_choices" value="#{dbUtil.cityChoices}"></h:outputText> |

|
<init-param> <param-name>javax.faces.LIFECYCLE_ID</param-name> <param-value>com.sun.faces.lifecycle.PARTIAL</param-value> </init-param> |


| @NamedQuery(name = "Cities.findSimilarName",
query = "SELECT c FROM Cities c WHERE LOWER(c.cityName) LIKE
:searchString"), |

| public
Collection<Cities> getCityChoices() { Collection<Cities> allCities = new ArrayList<Cities>(); if (cities.getCityName() != null && !cities.getCityName().equals("")) { List list = entityManager.createNamedQuery("Cities.findSimilarName"). setParameter("searchString", cities.getCityName().toLowerCase() + "%"). getResultList(); for (int i = 0; i < list.size(); i++) { allCities.add((Cities) list.get(i)); } } return allCities; } |






Posted by Arun Gupta in web2.0 | Comments[3]
|
|
|
|
|
Today's Page Hits: 1929
Total # blog entries: 1002