<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-21161147</id><updated>2011-12-13T07:01:55.750-08:00</updated><title type='text'>My Blogs</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://venur.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://venur.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Venu Duggireddy</name><uri>https://profiles.google.com/115676846791337851843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-x2UIKrNnMng/AAAAAAAAAAI/AAAAAAAAAAA/8jFqUpnkxI4/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21161147.post-5502336608974193717</id><published>2007-03-12T12:21:00.000-07:00</published><updated>2007-03-12T13:36:54.431-07:00</updated><title type='text'>DWR-2.0.rc2 + Spring 2.0 integration</title><content type='html'>Steps to integrate DWR with Spring 2.0 using new Name Spaces that were introduced. The integration currently works with Spring 2.0 and DWR-2.0RC-2 versions only. This does not work with Spring 2.0.1 or 2.0.2 or 2.0.3 and DWR-2.0RC-2, in order to work with spring 2.0+ versions you need get the current version of DWR-2.0RC-2 from HEAD of the CVS.&lt;br /&gt;&lt;br /&gt;Step 1: Download 2.0 version of Spring form &lt;a href="http://www.springframework.org/"&gt;http://www.springframework.org/&lt;/a&gt;&lt;br /&gt;Step 2: Download DWR version 2.0-rc2 from &lt;a href="http://getahead.org/dwr/download"&gt;http://getahead.org/dwr/download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Copy spring and dwr jar files to the webapplication classpath.&lt;br /&gt;&lt;br /&gt;Step 3:  Add the below lines into web.xml&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;servlet&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;servlet-name&amp;gt;dwr-spring&amp;lt;/servlet-name&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;servlet-class&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;org.springframework.web.servlet.DispatcherServlet&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;/servlet-class&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;/servlet&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;servlet-mapping&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;servlet-name&amp;gt;dwr-spring&amp;lt;/servlet-name&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;url-pattern&amp;gt;*.do&amp;lt;/url-pattern&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;servlet-mapping&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;servlet-name&amp;gt;dwr-spring&amp;lt;/servlet-name&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;url-pattern&amp;gt;/dwr/*&amp;lt;/url-pattern&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;welcome-file-list&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;!-- index page --&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;welcome-file&amp;gt;index.html&amp;lt;/welcome-file&amp;gt;&lt;/p&gt;&lt;p style="margin: 0pt 1px 0pt 2px;" align="left"&gt;&amp;lt;/welcome-file-list&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;Step 4: Create the default Spring MVC context file &lt;span&gt;&lt;span style="font-size:100%;"&gt;dwr-spring-servlet.xml under WEB-INF directory of the webapplication and configure the DWR&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;?xml version="1.0"&lt;br /&gt;encoding="UTF-8"?&amp;gt;&lt;p&gt;&lt;/p&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;xmlns:aop="http://www.springframework.org/schema/aop"&lt;/p&gt;xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;/p&gt;xsi:schemaLocation="http://www.springframework.org/schema/beans&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&lt;/p&gt;http://www.springframework.org/schema/aop&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;http://www.springframework.org/schema/aop/spring-aop-2.0.xsd&lt;/p&gt;http://www.directwebremoting.org/schema/spring-dwr&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd"&amp;gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;!-- DWR CONFIGURATION --&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;dwr:configuration&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;dwr:create&lt;br /&gt;javascript="JDate" type="new"&lt;p&gt;&lt;/p&gt;class="java.util.Date" /&amp;gt;&lt;br /&gt;&amp;lt;/dwr:configuration&amp;gt;&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt; &lt;/p&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;dwr:controller id="dwrController" debug="true" /&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt; &lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;bean id="dwrHandlerMappings"&lt;p&gt;&lt;/p&gt;class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&amp;gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;property name="alwaysUseFullPath"&lt;br /&gt;value="true" /&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;property&lt;br /&gt;name="mappings"&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;props&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;prop key="/dwr/**/*"&amp;gt;dwrController&amp;lt;/prop&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;/props&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;/property&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;/bean&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" align="left"&gt;&lt;/p&gt;&lt;/span&gt;&amp;lt;!-- END OF DWR CONFIGURATION --&amp;gt;&lt;p&gt;&lt;/p&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;br /&gt;Step 5:  Deploy the application in Tomcat 5.5 and point the browser to &lt;a href="http://localhost:8080/dwr-spring/dwr/index.html"&gt;http://localhost:8080/dwr-spring/dwr/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If the integartion is sucessfull it should display the page with JDate link on the page.&lt;br /&gt;&lt;br /&gt;Blow links provides more information on how to integrate DWR and Srping&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bram.jteam.nl/index.php/2007/01/"&gt;http://bram.jteam.nl/index.php/2007/01/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21161147-5502336608974193717?l=venur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://venur.blogspot.com/feeds/5502336608974193717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21161147&amp;postID=5502336608974193717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/5502336608974193717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/5502336608974193717'/><link rel='alternate' type='text/html' href='http://venur.blogspot.com/2007/03/dwr-20rc2-spring-20-integration.html' title='DWR-2.0.rc2 + Spring 2.0 integration'/><author><name>Venu Duggireddy</name><uri>https://profiles.google.com/115676846791337851843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-x2UIKrNnMng/AAAAAAAAAAI/AAAAAAAAAAA/8jFqUpnkxI4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21161147.post-116814694913121194</id><published>2007-01-06T21:15:00.000-08:00</published><updated>2007-01-06T21:15:49.150-08:00</updated><title type='text'>Tomcat 5.5 with JDK 1.4</title><content type='html'>To setup tomcat 5.5 or grater version on JDK 1.4 you need to download JDK 1.4 Compatability Package along with windows installer form &lt;a href="http://tomcat.apache.org/"&gt;http://tomcat.apache.org/&lt;/a&gt;. When installing the tomcat 5.5 it will by default look for JDK 5 ver, but it will still install the tomcat but when you run the tomcat it will display a message "This release of Apache Tomcat was packaged to run on J2SE 5.0 or later". To make it run under jdk 1.4 unzip the JDK 1.4 Compatability Package and copy the .jar file bin directory to the TOMCAT_HOME\bin directory and copy the .jar files under the common\endorsed to the TOMCAT_HOME\common directory. Now you should be able to run the tomcat by type in the &lt;a href="http://localhost:8080/"&gt;http://localhost:8080/&lt;/a&gt; in your favorite browser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21161147-116814694913121194?l=venur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://venur.blogspot.com/feeds/116814694913121194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21161147&amp;postID=116814694913121194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/116814694913121194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/116814694913121194'/><link rel='alternate' type='text/html' href='http://venur.blogspot.com/2007/01/tomcat-55-with-jdk-14.html' title='Tomcat 5.5 with JDK 1.4'/><author><name>Venu Duggireddy</name><uri>https://profiles.google.com/115676846791337851843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-x2UIKrNnMng/AAAAAAAAAAI/AAAAAAAAAAA/8jFqUpnkxI4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21161147.post-114054243264909400</id><published>2006-02-21T09:01:00.000-08:00</published><updated>2006-02-21T09:43:30.026-08:00</updated><title type='text'>Ajax + JSP to populate dependent dropdown</title><content type='html'>This example refers to the same as Startups + Ajax by example but here I am using JPG instead of Struts. The example has only dependency to prototype.js and is more helpful if you are using just JSP. You can download the latest code of &lt;a href="http://prototype.conio.net/"&gt;prototype.js&lt;/a&gt; Prototype is wonderful to have in your toolkit as it makes life easy for a JSP or JavaScript developer.&lt;br /&gt;&lt;br /&gt;The example is about how to populate the dependent dropdown list without refreshing the entire page when one of the options is selected. The example uses 2 jsp pages, first jsp (ajaxOptions.jsp) and uses prototype.js file and which has AJAX calls to the second jsp(ajaxOptionResult.jsp) this jsp returns XML as a response.&lt;br /&gt;&lt;br /&gt;1. ajaxOptions.jsp&lt;br /&gt;Make sure you have the prototype.js file as a part of you web application and reference the path in this jsp page in my case I have the js file under js/ajax/&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Address Form&amp;lt;/title&amp;gt;&lt;br /&gt;  &amp;lt;!-- include the AJAX JS File --&amp;gt;&lt;br /&gt;&amp;lt;script src="js/ajax/prototype.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;SCRIPT LANGUAGE="JavaScript"&amp;gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;onChange event of the dropDownList will calls this function&lt;br /&gt;which has AJAX call to Struts Action class&lt;br /&gt;@param: dropDownList object (this)&lt;br /&gt;@param: URL or Struts Action&lt;br /&gt;*/&lt;br /&gt;function depedentDropDown(obj, url) {&lt;br /&gt;  var stateValue = $F(obj)&lt;br /&gt;  var pars = "state=" + stateValue;&lt;br /&gt;  //alert(stateValue);&lt;br /&gt;  var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars,&lt;br /&gt;      onComplete: showResponse});&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Upon completing the request the AJAX will call this method&lt;br /&gt;which is responsible for loading the depedent list from the XML&lt;br /&gt;*/&lt;br /&gt;function showResponse(originalRequest)&lt;br /&gt;{&lt;br /&gt;  var list = $('city');&lt;br /&gt;  var xmlString = originalRequest.responseXML;&lt;br /&gt;  var items = xmlString.getElementsByTagName('labelValueBean');&lt;br /&gt;  clearList(list);&lt;br /&gt;  if (items.length &amp;gt; 0)&lt;br /&gt;  {&lt;br /&gt;      for (var i = 0; i &amp;lt; items.length; i++)&lt;br /&gt;      {&lt;br /&gt;          var node = items[i];&lt;br /&gt;          var value = "";&lt;br /&gt;          var label = "";&lt;br /&gt;          if (node.getElementsByTagName("label")[0].firstChild.nodeValue) {&lt;br /&gt;              value = node.getElementsByTagName("label")[0].firstChild.nodeValue;&lt;br /&gt;              label = node.getElementsByTagName("value")[0].firstChild.nodeValue;&lt;br /&gt;          }&lt;br /&gt;          addElementToList(list, value, label);&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;      addElementToList(list, "", "-- Select is Empty --");&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;remove the content of te list&lt;br /&gt;*/&lt;br /&gt;function clearList(list)&lt;br /&gt;{&lt;br /&gt;  while (list.length &amp;gt; 0)&lt;br /&gt;  {&lt;br /&gt;      list.remove(0);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;Add a new element to a selection list&lt;br /&gt;*/&lt;br /&gt;function addElementToList(list, value, label)&lt;br /&gt;{&lt;br /&gt;  var option = document.createElement("option");&lt;br /&gt;  option.value = value;&lt;br /&gt;  var labelNode = document.createTextNode(label);&lt;br /&gt;  option.appendChild(labelNode);&lt;br /&gt;  list.appendChild(option);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;  &amp;lt;form method="POST" action=""&amp;gt;&lt;br /&gt;    &amp;lt;fieldset style="padding: 2"&amp;gt;&lt;br /&gt;&amp;lt;legend&amp;gt;Address Form&amp;lt;/legend&amp;gt;&lt;br /&gt;&amp;lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="58%"&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;Address&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td width="76%"&amp;gt;&lt;br /&gt;            &amp;lt;input type="text" name="address1" size="20"/&amp;gt;&lt;br /&gt;          &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;Apt#&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td width="76%"&amp;gt;&lt;br /&gt;            &amp;lt;input type="text" name="address2" size="20"/&amp;gt;&lt;br /&gt;          &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;State&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td width="76%"&amp;gt;&lt;br /&gt;&amp;lt;select size="1" name="state" onChange="depedentDropDown(this,'ajaxOptionResult.jsp')"&amp;gt;&lt;br /&gt;&amp;lt;option&amp;gt;Select State&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;option value="VA"&amp;gt;VA&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;option value="MD"&amp;gt;MD&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;          &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;City&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td width="76%"&amp;gt;&lt;br /&gt;            &amp;lt;select size="1" name="city"&amp;gt;&lt;br /&gt;&amp;lt;option&amp;gt;Select City&amp;lt;/option&amp;gt;&lt;br /&gt;            &amp;lt;/select&amp;gt;&lt;br /&gt;          &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;Zip&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td width="76%"&amp;gt;&lt;br /&gt;            &amp;lt;input type="text" name="zip" size="20"/&amp;gt;&lt;br /&gt;          &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;/table&amp;gt;&lt;br /&gt;    &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;p&amp;gt;&lt;br /&gt;      &amp;lt;input type="submit" value="Submit" name="B1"/&amp;gt;&lt;br /&gt;      &amp;lt;input type="reset" value="Reset" name="B2"/&amp;gt;&lt;br /&gt;    &amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;2. ajaxOptionResult.jsp this JSP page response is of type "text/xml"&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&lt;br /&gt;String state = request.getParameter("state");&lt;br /&gt;String[] vaArray = new String[]{"Reston", "Centerville", "Chantilly", "Fairfax"};&lt;br /&gt;String[] mdArray = new String[]{"Silver Spring", "Rockwill", "Bethesda", "Brandywine" };&lt;br /&gt;// pouplate the state&lt;br /&gt;StringBuffer buffer = new StringBuffer();&lt;br /&gt;buffer.append("&amp;lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&amp;gt;");&lt;br /&gt;buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;root&amp;gt;");&lt;br /&gt;buffer.append("\n");&lt;br /&gt;if(state.equals("VA")){&lt;br /&gt; for(int i=0; i &amp;lt; vaArray.length; i++){&lt;br /&gt;    buffer.append("&amp;lt;labelValueBean&amp;gt;");&lt;br /&gt;    buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;label&amp;gt;" + vaArray[i] + "&amp;lt;/label&amp;gt;");&lt;br /&gt;      buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;value&amp;gt;"+ vaArray[i]+"&amp;lt;/value&amp;gt;");&lt;br /&gt;    buffer.append("\n");&lt;br /&gt;    buffer.append("&amp;lt;/labelValueBean&amp;gt;");&lt;br /&gt;  }&lt;br /&gt;}else if(state.equals("MD")){&lt;br /&gt;  for(int i=0; i &amp;lt; mdArray.length; i++){&lt;br /&gt;    buffer.append("&amp;lt;labelValueBean&amp;gt;");&lt;br /&gt;    buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;label&amp;gt;" + mdArray[i] + "&amp;lt;/label&amp;gt;");&lt;br /&gt;      buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;value&amp;gt;"+ mdArray[i]+"&amp;lt;/value&amp;gt;");&lt;br /&gt;    buffer.append("\n");&lt;br /&gt;    buffer.append("&amp;lt;/labelValueBean&amp;gt;");&lt;br /&gt;  }&lt;br /&gt;}else{&lt;br /&gt;  buffer.append("&amp;lt;labelValueBean&amp;gt;");&lt;br /&gt;  buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;label&amp;gt;Selet is empty&amp;lt;/label&amp;gt;");&lt;br /&gt;  buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;value&amp;gt;Empty&amp;lt;/value&amp;gt;");&lt;br /&gt;  buffer.append("\n");&lt;br /&gt;  buffer.append("&amp;lt;/labelValueBean&amp;gt;");&lt;br /&gt;}&lt;br /&gt;buffer.append("\n");&lt;br /&gt;buffer.append("&amp;lt;/root&amp;gt;");&lt;br /&gt;System.out.print(buffer.toString());&lt;br /&gt;response.addHeader("Content-Type", "text/xml");&lt;br /&gt;response.setContentType("text/xml; charset=windows-1252");&lt;br /&gt;out.write(buffer.toString());&lt;br /&gt;%&amp;gt;&lt;br /&gt;&lt;br /&gt;It is as simple as it is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21161147-114054243264909400?l=venur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://venur.blogspot.com/feeds/114054243264909400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21161147&amp;postID=114054243264909400' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/114054243264909400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/114054243264909400'/><link rel='alternate' type='text/html' href='http://venur.blogspot.com/2006/02/ajax-jsp-to-populate-dependent.html' title='Ajax + JSP to populate dependent dropdown'/><author><name>Venu Duggireddy</name><uri>https://profiles.google.com/115676846791337851843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-x2UIKrNnMng/AAAAAAAAAAI/AAAAAAAAAAA/8jFqUpnkxI4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21161147.post-113761081503334846</id><published>2006-01-18T11:00:00.000-08:00</published><updated>2006-01-18T11:00:15.036-08:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/hello/38/9487/640/work0012.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/hello/38/9487/320/work0012.jpg'&gt;&lt;/a&gt;&lt;br /&gt;Venu Reddy&amp;nbsp;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21161147-113761081503334846?l=venur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://venur.blogspot.com/feeds/113761081503334846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21161147&amp;postID=113761081503334846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/113761081503334846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/113761081503334846'/><link rel='alternate' type='text/html' href='http://venur.blogspot.com/2006/01/venu-reddy.html' title=''/><author><name>Venu Duggireddy</name><uri>https://profiles.google.com/115676846791337851843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-x2UIKrNnMng/AAAAAAAAAAI/AAAAAAAAAAA/8jFqUpnkxI4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21161147.post-113760349161883455</id><published>2006-01-18T08:57:00.000-08:00</published><updated>2006-01-18T13:24:46.836-08:00</updated><title type='text'>Struts and AJAX by example - 1</title><content type='html'>&lt;div  style="overflow: auto;font-family:arial;"&gt;              &lt;p&gt;&lt;span style="font-size:85%;"&gt;In the resent times I have been reading some interesting articles about &lt;span class="caps"&gt;AJAX&lt;/span&gt; and wanted to some examples using struts with &lt;span class="caps"&gt;AJAX&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;1. Dependent Select Boxes&lt;br /&gt;2. Suggest Text Field&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;The examples above assume that the user have a fair understanding about &lt;a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html" title=""&gt;XMLHttpRequest&lt;/a&gt; and JavaScript. In the examples I will be using &lt;a href="http://prototype.conio.net/" title=""&gt;prototype.js&lt;/a&gt;  Javascript Framework and &lt;a href="http://script.aculo.us/" title=""&gt;script web 2.0&lt;/a&gt;&lt;/span&gt; javascript.&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;prototype.js has all the utility functions to make an &lt;span class="caps"&gt;XML&lt;/span&gt;HttpRequest to server and srcipt.aculo.us as the utility methods for effects and suggest layer generation and much more if you want to use.&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;Dependent Select Box:&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;Let‘s take a classic example of Address Form in a &lt;span class="caps"&gt;JSP&lt;/span&gt; page. Upon selecting the State from the Dropdown List corresponding City‘s needs to be populated in the city dropdown list. The question still remains why should I use &lt;span class="caps"&gt;AJAX&lt;/span&gt;? Well, the advantage of using &lt;span class="caps"&gt;AJAX&lt;/span&gt; is it will not reloaded or refreshed the complete page it will reload just the dependent dropdown list with values that are comming from the server.&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;addressForm.jsp is a simple &lt;span class="caps"&gt;JSP&lt;/span&gt; page which has a &lt;span class="caps"&gt;HTML &lt;/span&gt;Form and Form elements. In the &lt;span class="caps"&gt;JSP &lt;/span&gt;&lt;a href="http://www.sergiopereira.com/articles/prototype.js.html" title=""&gt;documentation for porototype&lt;/a&gt;&lt;br /&gt;The &lt;span class="caps"&gt;AJAX&lt;/span&gt; request here is expecting an &lt;span class="caps"&gt;XML&lt;/span&gt; file with a list of LabelValueBean objects.&lt;/span&gt; page I have included prototype.js file as script include. Here is the JSP page looks like&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;title&amp;gt;Address Form&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- include the AJAX JS File --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src="js/ajax/prototype.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;SCRIPT LANGUAGE="JavaScript"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&lt;br /&gt;onChange event of the dropDownList will calls this function&lt;br /&gt;&lt;br /&gt;which has AJAX call to Struts Action class&lt;br /&gt;&lt;br /&gt;@param: dropDownList object (this)&lt;br /&gt;&lt;br /&gt;@param: URL or Struts Action&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;function depedentDropDown(obj, url){&lt;br /&gt;&lt;br /&gt; var stateValue = $F(obj)&lt;br /&gt;&lt;br /&gt;var pars = "state=" + stateValue;&lt;br /&gt;&lt;br /&gt;var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,&lt;br /&gt;onComplete: showResponse});&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&lt;br /&gt;Upon completing the request the AJAX will call this method&lt;br /&gt;&lt;br /&gt;which is responsible for loading the depedent list from the XML&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function showResponse(originalRequest)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; var list = document.getElementById('city');&lt;br /&gt;&lt;br /&gt; var xmlString = originalRequest.responseXML;&lt;br /&gt;&lt;br /&gt; var items = xmlString.getElementsByTagName('labelValueBean');&lt;br /&gt;&lt;br /&gt; clearList(list);&lt;br /&gt;&lt;br /&gt; if (items.length &amp;gt; 0)&lt;br /&gt;&lt;br /&gt; {&lt;br /&gt;&lt;br /&gt;    for (var i=0; i&amp;lt;items.length; i++)&lt;br /&gt;&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;      var node = items[i];&lt;br /&gt;&lt;br /&gt;      var value="";&lt;br /&gt;&lt;br /&gt;      var label="";&lt;br /&gt;&lt;br /&gt;      if(node.getElementsByTagName("label")[0].firstChild.nodeValue){&lt;br /&gt;&lt;br /&gt;          value = node.getElementsByTagName("label")[0].firstChild.nodeValue;&lt;br /&gt;&lt;br /&gt;          label = node.getElementsByTagName("value")[0].firstChild.nodeValue;&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      addElementToList(list, value, label);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  else&lt;br /&gt;&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    addElementToList(list, "", "-- Select is Empty --");&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt;remove the content of te list&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;function clearList(list)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  while (list.length &amp;gt; 0)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  list.remove(0);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt;Add a new element to a selection list&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;function addElementToList(list, value, label)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;var option = document.createElement("option");&lt;br /&gt;&lt;br /&gt;option.value = value;&lt;br /&gt;&lt;br /&gt;var labelNode = document.createTextNode(label);&lt;br /&gt;&lt;br /&gt;option.appendChild(labelNode   );&lt;br /&gt;&lt;br /&gt;list.appendChild(option);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;form method="POST" action=""&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;fieldset style="padding: 2"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;legend&amp;gt;Address Form&amp;lt;/legend&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse:&lt;br /&gt;collapse" bordercolor="#111111" width="58%"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;Address&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="76%"&amp;gt;&amp;lt;input type="text" name="address1" size="20"&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;Apt#&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="76%"&amp;gt;&amp;lt;input type="text" name="address2" size="20"&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;State&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="76%"&amp;gt;&amp;lt;select size="1" name="state" onChange="depedentDropDown(this,'ajaxOptionList.do')"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;option&amp;gt;Select State&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;option value="VA"&amp;gt;VA&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;option value="MD"&amp;gt;MD&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;City&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="76%"&amp;gt;&amp;lt;select size="1" name="city"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;option&amp;gt;Select City&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="24%"&amp;gt;Zip&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;td width="76%"&amp;gt;&amp;lt;input type="text" name="zip" size="20"&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/fieldset&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;input type="submit" value="Submit" name="B1"&amp;gt;&amp;lt;input type="reset"&lt;br /&gt;value="Reset" name="B2"&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;Struts Action Classes:&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;To make the process little convenient and reusable I created an abstract class which extends Action which has an abstract method which can be implemented by extending subclasses. The super class is responsible for generating the &lt;span class="caps"&gt;XML&lt;/span&gt; and sending the request back. For turning Java Object into &lt;span class="caps"&gt;XML I&lt;/span&gt; have used &lt;a href="http://jakarta.apache.org/commons/betwixt/" title=""&gt;Commons Betwixt&lt;/a&gt; an open source for Jakarta. Download the jar file and included it in the classpath. i.e., copy the betwixt.jar file into WEB-INF/lib folder of the application. (Note: If you are not using struts then betwixt has &lt;a href="http://jakarta.apache.org/commons/betwixt/dependencies" title=""&gt;dependencies&lt;/a&gt; all the jar files needs to be in the classpath )&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;AjaxOptionsAction.java&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;import java.beans.IntrospectionException;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.StringWriter;&lt;br /&gt;import java.util.List;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;import org.apache.commons.betwixt.io.BeanWriter;&lt;br /&gt;import org.apache.commons.betwixt.strategy.DecapitalizeNameMapper;&lt;br /&gt;import org.apache.struts.action.Action;&lt;br /&gt;import org.apache.struts.action.ActionForm;&lt;br /&gt;import org.apache.struts.action.ActionForward;&lt;br /&gt;import org.apache.struts.action.ActionMapping;&lt;br /&gt;import org.xml.sax.SAXException;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;public abstract class AjaxOptionsAction extends Action {&lt;br /&gt;/**&lt;/span&gt;&lt;/p&gt;      &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;This is the main action called from the Struts framework.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param mapping  The ActionMapping used to select this instance.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param form     The optional ActionForm bean for this request.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param request  The HTTP Request we are processing.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param response The HTTP Response we are processing.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@return&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@throws javax.servlet.ServletException&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@throws java.io.IOException&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*/&lt;br /&gt;public ActionForward execute(ActionMapping mapping, ActionForm form,&lt;br /&gt;HttpServletRequest request,&lt;br /&gt;HttpServletResponse response) throws Exception {&lt;br /&gt;String buffer = getXMLObject(request);&lt;br /&gt;response.addHeader("Content-Type", "text/xml");&lt;br /&gt;response.setContentType("text/xml; charset=windows-1252");&lt;br /&gt;response.getOutputStream().print(buffer.toString());&lt;br /&gt;return null;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;/**&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Get's the List object from the extended class and convets the List to XML&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param request&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@return&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*/&lt;br /&gt;public String getXMLObject(HttpServletRequest request) {&lt;br /&gt;List list = getDropDownList(request);&lt;br /&gt;String xmlString = toXML(list, "root");&lt;br /&gt;return xmlString;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;/**&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;This will convert the Object into XML&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param root&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param object&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@return&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*/&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;public String toXML(Object object, String root) {&lt;br /&gt;StringWriter outputWriter = new StringWriter();&lt;br /&gt;// Betwixt just writes out the bean as a fragment&lt;br /&gt;// So if we want well-formed xml, we need to add the prolog&lt;br /&gt;outputWriter.write("");&lt;br /&gt;outputWriter.write("\n");&lt;br /&gt;// Create a BeanWriter which writes to our prepared stream&lt;br /&gt;BeanWriter beanWriter = new BeanWriter(outputWriter);&lt;br /&gt;beanWriter.getBindingConfiguration().setMapIDs(false);&lt;br /&gt;beanWriter.getXMLIntrospector().getConfiguration().setElementNameMapper(new DecapitalizeNameMapper());&lt;br /&gt;beanWriter.enablePrettyPrint();&lt;br /&gt;try {&lt;br /&gt;beanWriter.write(root, object);&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;System.out.println(e.toString());&lt;br /&gt;} catch (SAXException e) {&lt;br /&gt;System.out.println(e.toString());&lt;br /&gt;} catch (IntrospectionException e) {&lt;br /&gt;System.out.println(e.toString());&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;beanWriter.setIndent(outputWriter.toString());&lt;br /&gt;return new String(outputWriter.toString());&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;/**&lt;/span&gt;&lt;/p&gt;   &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;The class which extends this calls have to override this method and return a List Object&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@param request&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;@return&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*/&lt;br /&gt;public abstract List getDropDownList(HttpServletRequest request);&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;     &lt;p&gt;&lt;span style="font-size:85%;"&gt;AjaxOptionListAction.java extends AjaxOptionsAction.java and override the method getDropDownList. In the struts-config.xml the mapping would point to this class.&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;AjaxOptionListAction.java&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import org.apache.struts.util.LabelValueBean;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;public class AjaxOptionListAction extends AjaxOptionsAction&lt;br /&gt;{&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;public List getDropDownList(HttpServletRequest request)&lt;br /&gt;{&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;String state = request.getParameter("state");&lt;br /&gt;List list = new ArrayList();&lt;br /&gt;// get the List for DB or form the session which ever is convinent&lt;br /&gt;list = getList(state);&lt;br /&gt;return list;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;/*&lt;br /&gt;This method is for example only&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:85%;"&gt;*/&lt;br /&gt;public List getList(String state) {&lt;br /&gt;      List list = new ArrayList();&lt;br /&gt;      if (state.equalsIgnoreCase("VA")) {&lt;br /&gt;          list.add(new LabelValueBean("Reston", "Reston"));&lt;br /&gt;          list.add(new LabelValueBean("Chantilly", "Chantilly"));&lt;br /&gt;          list.add(new LabelValueBean("Centreville", "Centreville"));&lt;br /&gt;          list.add(new LabelValueBean("Herndon", "Herndon"));&lt;br /&gt;          list.add(new LabelValueBean("Eledn st", "Eledn st"));&lt;br /&gt;      } else if (state.equalsIgnoreCase("MD")) {&lt;br /&gt;          list.add(new LabelValueBean("Silver Spring", "Silver Spring"));&lt;br /&gt;          list.add(new LabelValueBean("Rockwill", "Rockwill"));&lt;br /&gt;          list.add(new LabelValueBean("BETHESDA", "BETHESDA"));&lt;br /&gt;          list.add(new LabelValueBean("BOYDS", "BOYDS"));&lt;br /&gt;          list.add(new LabelValueBean("BRANDYWINE", "BRANDYWINE"));&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      return list;&lt;br /&gt;  }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt;      &lt;p&gt;&lt;span style="font-size:85%;"&gt;In struts-config.xml the mapping&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;code&gt;&amp;lt;code&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;action path="/ajaxOptionList" type="AjaxOptionListAction"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/code&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;action path="/ajaxOptionList" type="AjaxOptionListAction"&gt;&lt;br /&gt;&lt;/action&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;That is it as simple as it is. In the next phase I will use the same example to populate the Suggest City Text Field insted of city dropdown list.&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;The above code works fine but if the list is too big then it takes some time to clear the list. We can modify the JavaScript in the jsp page to do much better job.&lt;/span&gt;&lt;/p&gt;          &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21161147-113760349161883455?l=venur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://venur.blogspot.com/feeds/113760349161883455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21161147&amp;postID=113760349161883455' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/113760349161883455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21161147/posts/default/113760349161883455'/><link rel='alternate' type='text/html' href='http://venur.blogspot.com/2006/01/struts-and-ajax-by-example-1.html' title='Struts and AJAX by example - 1'/><author><name>Venu Duggireddy</name><uri>https://profiles.google.com/115676846791337851843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-x2UIKrNnMng/AAAAAAAAAAI/AAAAAAAAAAA/8jFqUpnkxI4/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry></feed>
