<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;DkAAQno_fyp7ImA9WhdUEkk.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073</id><updated>2011-09-28T14:19:03.447-07:00</updated><category term="Spring Webflow" /><category term="AJAX" /><category term="Tutorial" /><category term="Errors" /><category term="Open Source" /><category term="Struts 2" /><title>Struts-2-Developers</title><subtitle type="html">A blog about Struts2 Framework &amp;amp; related technologies.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://struts.fromdev.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Struts2Developers" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="struts2developers" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkAARns4cSp7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-678254315367320861</id><published>2009-11-19T15:57:00.001-08:00</published><updated>2010-05-21T14:52:27.539-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:52:27.539-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Webflow" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>Spring Webflow - FormAction.doValidate() isn't called when there is no validator configured</title><content type="html">This post is relevant for the Spring Webflow 1.x users. &lt;br /&gt;&lt;br /&gt;I have been breaking my head from 2-3 days over this problem and was able to crack it today. &lt;br /&gt;I did some search on google and found that this is a open Bug on Spring Webflow (&lt;a href="http://jira.springframework.org/browse/SWF-397"&gt;Spring Webflow 1.0.3 Bug SWF-397&lt;/a&gt;)&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;This bug has not been resolved since they can't do it in a 100% backwards compatible way. I found a workaround/solution so thought of sharing with other who are struggling on problem.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&lt;a href="#1"  name="1"&gt;What is the issue? &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem occurs when you have a FormAction bean configured in your application without a validator e.g. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;bean id="myForm" parent="baseForm"class="example.spring.forms.OfferForm"&gt;&lt;/bean&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The spring framework code does a check for "if (getValidator() != null) " before making a call to doValidate() method and therefore doValidate method will not be called when we have configured the FormAction bean like above.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="#2" name="2"&gt;What is the workaround?&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The workaround is simple and requires you to write a simple dummy validator class which does nothing. Below is a Sample dummy validation class you can use for your application. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;package example.spring.validations;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.validation.Errors;import org.springframework.validation.Validator;/*** @author swiki**/public class DummyValidation implements Validator {public boolean supports(Class clazz){return true;}public void validate(Object target, Errors errors){return;  }}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now inject this dummy validator bean to all the form beans where you want your own doValidate method to be called. See the example bean config below&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&lt;bean id="myForm" parent="baseForm"class="example.spring.forms.OfferForm"&gt;&lt;property name="validator"&gt;&lt;bean class="example.spring.validations.DummyValidation"/&gt;&lt;/property&gt;&lt;/bean&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Thats it! Your doValidate method should start getting called now as the "if (getValidator() != null) " condition will not fail.&lt;br /&gt;&lt;br /&gt;Please don't forget to share, if you know of a better workaround for this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-678254315367320861?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2FtO_XaePDCc_Tv97b-q8wAQJo8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2FtO_XaePDCc_Tv97b-q8wAQJo8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2FtO_XaePDCc_Tv97b-q8wAQJo8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2FtO_XaePDCc_Tv97b-q8wAQJo8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=2I8oG1ETWiY:meLw68tKrvY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=2I8oG1ETWiY:meLw68tKrvY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=2I8oG1ETWiY:meLw68tKrvY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=2I8oG1ETWiY:meLw68tKrvY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/678254315367320861/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2009/11/spring-webflow-formactiondovalidate.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/678254315367320861?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/678254315367320861?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2009/11/spring-webflow-formactiondovalidate.html" title="Spring Webflow - FormAction.doValidate() isn't called when there is no validator configured" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;AkAGQ3w_fyp7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-6758095937249910062</id><published>2009-10-29T17:19:00.000-07:00</published><updated>2010-05-21T14:52:02.247-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:52:02.247-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Struts 2" /><title>Struts 2 AJAX Autocomplete dropdown example</title><content type="html">I started playing with struts 2.0.14 showcase application and thought of extracting a simple AJAX Autocomplete dropdown example from it. &lt;br /&gt;In this example I am trying to create a autocomplete textbox and when you select one value from this autocomplete drop down the other will populate accordingly. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;This post is for developers who are new to Struts 2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;This example uses &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Struts 2.0.14 - &lt;a href="http://struts.apache.org/download.cgi" target="_blank"&gt;Download Struts &lt;/a&gt;&lt;br /&gt;- apache-tomcat-6.0.18  - &lt;a href="http://tomcat.apache.org/download-60.cgi" target="_blank"&gt;Download Tomcat &lt;/a&gt; &lt;br /&gt;- java version "1.6.0_10"&lt;br /&gt;- freemarker template (2.3.8) for the second dropdown.&lt;br /&gt;&lt;br /&gt;You can use this example as is or play around with it based on your need. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;index.jsp : &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This page redirects the request to the demo page where autocomplete text box is diplayed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;  &lt;br /&gt; &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;&lt;br /&gt; &lt;s:action name="ShowDemo" executeResult="true"&gt;&lt;/s:action&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;autocomplete.jsp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This page contains the core of this example, the Struts tags for Autocomplete.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;  &lt;br /&gt;&amp;lt;%@ page contentType=&amp;quot;text/html;charset=UTF-8&amp;quot; language=&amp;quot;java&amp;quot; %&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix=&amp;quot;s&amp;quot; uri=&amp;quot;/struts-tags&amp;quot; %&amp;gt;&lt;br /&gt;&amp;lt;s:head theme=&amp;quot;ajax&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;AutoComplete&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;s:url id=&amp;quot;detailUrl&amp;quot; action=&amp;quot;DetailResponse&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;Link two autocompleter elements. When the selected value in 'Autocompleter 1' changes, &lt;br /&gt;the available values in 'Autocompleter 2' will change also.&lt;br /&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;form id=&amp;quot;selectForm&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;p&amp;gt;Autocompleter 1 &amp;lt;s:autocompleter theme=&amp;quot;simple&amp;quot; name=&amp;quot;select&amp;quot; list=&amp;quot;selectList&amp;quot;  value=&amp;quot;Colors&amp;quot; notifyTopics=&amp;quot;/Changed&amp;quot; forceValidOption=&amp;quot;true&amp;quot; id=&amp;quot;sel&amp;quot;/&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;Autocompleter 2 &amp;lt;s:autocompleter theme=&amp;quot;ajax&amp;quot; href=&amp;quot;%{#detailUrl}&amp;quot; autoComplete=&amp;quot;false&amp;quot; formId=&amp;quot;selectForm&amp;quot; listenTopics=&amp;quot;/Changed&amp;quot; forceValidOption=&amp;quot;true&amp;quot; id=&amp;quot;ops&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;options.ftl &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is Freemarker template to render the second drop down, which is populated based on selection in first autocomplete drop down.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;  &lt;br /&gt;[&lt;br /&gt;&lt;#list options as option&gt;&lt;br /&gt; ["${option}"],&lt;br /&gt;&lt;/#list&gt;&lt;br /&gt;]&lt;br /&gt;&lt;/pre&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ListingAction.java &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This action class is to populate values in the first autocomplete drop down.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;&lt;br /&gt;package ajaxdemo.action;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("serial")&lt;br /&gt;public class ListingAction extends ActionSupport {&lt;br /&gt; private List&lt;String&gt; selectList = null;&lt;br /&gt;&lt;br /&gt; public String execute() throws Exception {&lt;br /&gt;  selectList = new ArrayList&lt;String&gt;();&lt;br /&gt;  selectList.add("Fruits");&lt;br /&gt;  selectList.add("Colors");&lt;br /&gt;  return SUCCESS;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public List getSelectList() {&lt;br /&gt;  return selectList;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setSelectList(List&lt;String&gt; selectList) {&lt;br /&gt;  this.selectList = selectList;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;DetailAction.java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a action class to populate the second autocomplete drop down based on selection value in first drop down.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;package ajaxdemo.action;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class DetailAction extends ActionSupport {&lt;br /&gt;  private String select;&lt;br /&gt;  private List&lt;String&gt; options = new ArrayList&lt;String&gt;();&lt;br /&gt;&lt;br /&gt;  private static final long serialVersionUID = -8481638176160014396L;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception {&lt;br /&gt;    if ("Fruits".equalsIgnoreCase(select)) {&lt;br /&gt;      options.add("apple");&lt;br /&gt;      options.add("banana");&lt;br /&gt;      options.add("grape");&lt;br /&gt;      options.add("pear");&lt;br /&gt;    } else if ("Colors".equalsIgnoreCase(select)) {&lt;br /&gt;      options.add("red");&lt;br /&gt;      options.add("green");&lt;br /&gt;      options.add("blue");&lt;br /&gt;    }&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getSelect() {&lt;br /&gt;    return select;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setSelect(String select) {&lt;br /&gt;    this.select = select;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public List&lt;String&gt; getOptions() {&lt;br /&gt;    return options;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;struts.xml &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Struts config file for action mappings.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE struts PUBLIC&lt;br /&gt;    &amp;quot;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&amp;quot;&lt;br /&gt;    &amp;quot;http://struts.apache.org/dtds/struts-2.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;    &lt;br /&gt;&amp;lt;struts&amp;gt;&lt;br /&gt; &amp;lt;package name=&amp;quot;demo&amp;quot; extends=&amp;quot;struts-default&amp;quot;&amp;gt;  &lt;br /&gt;  &amp;lt;action name=&amp;quot;ShowDemo&amp;quot; class=&amp;quot;ajaxdemo.action.ListingAction&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/autocomplete.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;     &lt;br /&gt;       &amp;lt;action name=&amp;quot;DetailResponse&amp;quot; class=&amp;quot;ajaxdemo.action.DetailAction&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;result type=&amp;quot;freemarker&amp;quot;&amp;gt;/options.ftl&amp;lt;/result&amp;gt;&lt;br /&gt;       &amp;lt;/action&amp;gt;      &lt;br /&gt; &amp;lt;/package&amp;gt;  &lt;br /&gt;&amp;lt;/struts&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;web.xml &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The application deployment descriptor.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;web-app version=&amp;quot;2.4&amp;quot; xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot;&lt;br /&gt; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt; xsi:schemalocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;filter&amp;gt;&lt;br /&gt;  &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;  &amp;lt;filter-class&amp;gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;br /&gt;  &amp;lt;/filter-class&amp;gt;&lt;br /&gt; &amp;lt;/filter&amp;gt;&lt;br /&gt; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;  &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;  &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt; &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;  &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt; &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Output&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Go the URL http://localhost:8080/ajaxdemo/ in your favorite web browser. The page should look like this. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hpoWLUUuwbc/SuoySNYAxII/AAAAAAAAAgU/xcpV_LNIte4/s1600-h/Struts2AjaxAutocomplete.PNG"&gt;&lt;img style="display:block;width:100%; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_hpoWLUUuwbc/SuoySNYAxII/AAAAAAAAAgU/xcpV_LNIte4/s400/Struts2AjaxAutocomplete.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5398182391766369410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Web application directory Structure&lt;/span&gt;&lt;br /&gt;This is how the application war directory structure should look like. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hpoWLUUuwbc/SuoyjIrXIfI/AAAAAAAAAgc/6_0TZ7AkjVs/s1600-h/Struts2AjaxAutocompleteDirStrutct.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 332px; " src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SuoyjIrXIfI/AAAAAAAAAgc/6_0TZ7AkjVs/s400/Struts2AjaxAutocompleteDirStrutct.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5398182682563125746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;ajaxdemo/&lt;br /&gt;ajaxdemo/index.jsp&lt;br /&gt;ajaxdemo/autocomplete.jsp&lt;br /&gt;ajaxdemo/options.ftl&lt;br /&gt;ajaxdemo/WEB-INF/web.xml&lt;br /&gt;ajaxdemo/WEB-INF/classes/struts.xml&lt;br /&gt;ajaxdemo/WEB-INF/classes/ajaxdemo/action/DetailAction.class&lt;br /&gt;ajaxdemo/WEB-INF/classes/ajaxdemo/action/ListingAction.class&lt;br /&gt;ajaxdemo/WEB-INF/lib/*.jar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are the list of jar files you need to have in your application WEB-INF/lib dir.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;  &lt;br /&gt;&lt;br /&gt;antlr-2.7.2.jar&lt;br /&gt;aopalliance-1.0.jar&lt;br /&gt;classworlds-1.1.jar&lt;br /&gt;commons-beanutils-1.7.0.jar&lt;br /&gt;commons-chain-1.1.jar&lt;br /&gt;commons-codec-1.3.jar&lt;br /&gt;commons-collections-2.1.jar&lt;br /&gt;commons-collections-3.1.jar&lt;br /&gt;commons-digester-1.6.jar&lt;br /&gt;commons-digester-1.8.jar&lt;br /&gt;commons-el-1.0.jar&lt;br /&gt;commons-fileupload-1.1.1.jar&lt;br /&gt;commons-io-1.1.jar&lt;br /&gt;commons-lang-2.1.jar&lt;br /&gt;commons-logging-1.0.4.jar&lt;br /&gt;commons-logging-api-1.1.jar&lt;br /&gt;commons-validator-1.3.0.jar&lt;br /&gt;dwr-1.1-beta-3.jar&lt;br /&gt;freemarker-2.3.8.jar&lt;br /&gt;jstl-1.1.0.jar&lt;br /&gt;log4j-1.2.9.jar&lt;br /&gt;myfaces-api-1.1.2.jar&lt;br /&gt;myfaces-impl-1.1.2.jar&lt;br /&gt;ognl-2.6.11.jar&lt;br /&gt;oro-2.0.8.jar&lt;br /&gt;plexus-container-default-1.0-alpha-10.jar&lt;br /&gt;plexus-utils-1.2.jar&lt;br /&gt;sitemesh-2.2.1.jar&lt;br /&gt;spring-beans-2.0.5.jar&lt;br /&gt;spring-context-2.0.5.jar&lt;br /&gt;spring-core-2.0.5.jar&lt;br /&gt;spring-web-2.0.5.jar&lt;br /&gt;struts-core-1.3.5.jar&lt;br /&gt;struts2-codebehind-plugin-2.0.14.jar&lt;br /&gt;struts2-config-browser-plugin-2.0.14.jar&lt;br /&gt;struts2-core-2.0.14.jar&lt;br /&gt;struts2-jsf-plugin-2.0.14.jar&lt;br /&gt;struts2-sitemesh-plugin-2.0.14.jar&lt;br /&gt;struts2-struts1-plugin-2.0.14.jar&lt;br /&gt;struts2-tiles-plugin-2.0.14.jar&lt;br /&gt;tiles-api-2.0.4.jar&lt;br /&gt;tiles-core-2.0.4.jar&lt;br /&gt;tiles-jsp-2.0.4.jar&lt;br /&gt;velocity-1.4.jar&lt;br /&gt;velocity-dep-1.4.jar&lt;br /&gt;velocity-tools-1.1.jar&lt;br /&gt;xml-apis-1.0.b2.jar&lt;br /&gt;xwork-2.0.7.jar&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/softwarewikipedia/ajaxdemo.war?attredirects=0&amp;d=1"&gt;Download ajaxdemo.war here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="display:none;"&gt;&lt;br /&gt;struts form, struts 2 ajax autocomplete drop down code example, Struts2 ajax autocomplete tutorial with sample code, struts 2 ajax auto complete drop down code download, struts training, apache struts training online&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-6758095937249910062?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SUdFGmBewUa2vRg9CkgLTdVvGGE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SUdFGmBewUa2vRg9CkgLTdVvGGE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SUdFGmBewUa2vRg9CkgLTdVvGGE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SUdFGmBewUa2vRg9CkgLTdVvGGE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=ir1DfeUff3o:ikhAwl9SETg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=ir1DfeUff3o:ikhAwl9SETg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=ir1DfeUff3o:ikhAwl9SETg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=ir1DfeUff3o:ikhAwl9SETg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/6758095937249910062/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2009/10/struts-2-ajax-autocomplete-dropdown.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/6758095937249910062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/6758095937249910062?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2009/10/struts-2-ajax-autocomplete-dropdown.html" title="Struts 2 AJAX Autocomplete dropdown example" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_hpoWLUUuwbc/SuoySNYAxII/AAAAAAAAAgU/xcpV_LNIte4/s72-c/Struts2AjaxAutocomplete.PNG" height="72" width="72" /><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;AkAHRXw7fCp7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-3140525809686436550</id><published>2009-10-28T14:00:00.000-07:00</published><updated>2010-05-21T14:52:14.204-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:52:14.204-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Struts 2" /><title>Struts 2.1.8 - FreeMarker template error! - Expression parameters.pushId is undefined</title><content type="html">I was working on a simple Ajax autocomplete dropdown box and came across this error on Struts 2.1.8. Somehow all Struts 2 Freemarker errors are not clear at telling what is the root cause of a problem.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I tried searching for the solution and found many other people are facing this so thought of making a note of it. &lt;br /&gt;&lt;br /&gt;Below is the JSP I am using for populating a Autocomplete drop down.&lt;br /&gt;Struts 2.1.8 has dojo taglib which needs to be included if you are using dojo, like below. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;br /&gt;&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;&lt;br /&gt;&lt;%@ taglib prefix="sx" uri="/struts-dojo-tags" %&gt;&lt;br /&gt;&lt;br /&gt;&lt;sx:head cache="true"&gt;&lt;/sx:head&gt;&lt;br /&gt;&lt;s:url var="autoex" action="DetailAction"&gt;&lt;/s:url&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;s:form id="frm_demo" name="frm_demo" theme="simple"&gt;&lt;br /&gt;  &lt;p&gt;&lt;br /&gt;    Autocompleter 1&lt;br /&gt;    &lt;sx:autocompleter&lt;br /&gt;        name="lst"&lt;br /&gt;        list="lstList1"&lt;br /&gt;        value="Fruits"&lt;br /&gt;        valueNotifyTopics="/show_detail"&lt;br /&gt;        forceValidOption="true"&lt;br /&gt;        onchange="javascript:show_details();return false;"/&gt;&lt;br /&gt;  &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;s:div&lt;br /&gt;   showLoadingText="false" id="details" href="%{#autoex}" theme="ajax"&lt;br /&gt;   listenTopics="/show_detail" formId="frm_demo"&gt;&lt;/s:div&gt;&lt;br /&gt;&lt;/s:form&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When I run this webapp, I get following error. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;&lt;br /&gt;&lt;br /&gt;Oct 28, 2009 1:22:36 PM freemarker.log.JDK14LoggerFactory$JDK14Logger error&lt;br /&gt;SEVERE: &lt;br /&gt;&lt;br /&gt;Expression parameters.pushId is undefined on line 24, column 6 in template/ajax/div-close.ftl.&lt;br /&gt;The problematic instruction:&lt;br /&gt;----------&lt;br /&gt;==&gt; if parameters.pushId [on line 24, column 1 in template/ajax/div-close.ftl]&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;Java backtrace for programmers:&lt;br /&gt;----------&lt;br /&gt;freemarker.core.InvalidReferenceException: Expression parameters.pushId is undefined on line 24, column 6 in template/ajax/div-close.ftl.&lt;br /&gt; at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)&lt;br /&gt; at freemarker.core.Expression.isTrue(Expression.java:145)&lt;br /&gt; at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:77)&lt;br /&gt; at freemarker.core.Environment.visit(Environment.java:209)&lt;br /&gt; at freemarker.core.MixedContent.accept(MixedContent.java:92)&lt;br /&gt; at freemarker.core.Environment.visit(Environment.java:209)&lt;br /&gt; at freemarker.core.Environment.process(Environment.java:189)&lt;br /&gt; at freemarker.template.Template.process(Template.java:237)&lt;br /&gt; at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:182)&lt;br /&gt; at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)&lt;br /&gt; at org.apache.struts2.components.UIBean.end(UIBean.java:513)&lt;br /&gt; at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspx_meth_s_005fdiv_005f0(listing_jsp.java:292)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspx_meth_s_005fform_005f0(listing_jsp.java:194)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspService(listing_jsp.java:94)&lt;br /&gt; at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)&lt;br /&gt; at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)&lt;br /&gt; at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:611)&lt;br /&gt; at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:123)&lt;br /&gt; at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)&lt;br /&gt; at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)&lt;br /&gt; at org.apache.struts2.components.ActionComponent.executeAction(ActionComponent.java:289)&lt;br /&gt; at org.apache.struts2.components.ActionComponent.end(ActionComponent.java:172)&lt;br /&gt; at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)&lt;br /&gt; at org.apache.jsp.index_jsp._jspx_meth_s_005faction_005f0(index_jsp.java:88)&lt;br /&gt; at org.apache.jsp.index_jsp._jspService(index_jsp.java:59)&lt;br /&gt; at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)&lt;br /&gt; at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)&lt;br /&gt; at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)&lt;br /&gt; at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)&lt;br /&gt; at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)&lt;br /&gt; at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)&lt;br /&gt; at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)&lt;br /&gt; at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)&lt;br /&gt; at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)&lt;br /&gt; at java.lang.Thread.run(Unknown Source)&lt;br /&gt;Oct 28, 2009 1:22:36 PM org.apache.catalina.core.ApplicationDispatcher invoke&lt;br /&gt;SEVERE: Servlet.service() for servlet jsp threw exception&lt;br /&gt;&lt;br /&gt;Expression parameters.pushId is undefined on line 24, column 6 in template/ajax/div-close.ftl.&lt;br /&gt;The problematic instruction:&lt;br /&gt;----------&lt;br /&gt;==&gt; if parameters.pushId [on line 24, column 1 in template/ajax/div-close.ftl]&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;Java backtrace for programmers:&lt;br /&gt;----------&lt;br /&gt;freemarker.core.InvalidReferenceException: Expression parameters.pushId is undefined on line 24, column 6 in template/ajax/div-close.ftl.&lt;br /&gt; at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)&lt;br /&gt; at freemarker.core.Expression.isTrue(Expression.java:145)&lt;br /&gt; at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:77)&lt;br /&gt; at freemarker.core.Environment.visit(Environment.java:209)&lt;br /&gt; at freemarker.core.MixedContent.accept(MixedContent.java:92)&lt;br /&gt; at freemarker.core.Environment.visit(Environment.java:209)&lt;br /&gt; at freemarker.core.Environment.process(Environment.java:189)&lt;br /&gt; at freemarker.template.Template.process(Template.java:237)&lt;br /&gt; at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:182)&lt;br /&gt; at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)&lt;br /&gt; at org.apache.struts2.components.UIBean.end(UIBean.java:513)&lt;br /&gt; at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspx_meth_s_005fdiv_005f0(listing_jsp.java:292)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspx_meth_s_005fform_005f0(listing_jsp.java:194)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspService(listing_jsp.java:94)&lt;br /&gt; at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)&lt;br /&gt; at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)&lt;br /&gt; at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:611)&lt;br /&gt; at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:123)&lt;br /&gt; at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)&lt;br /&gt; at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)&lt;br /&gt; at org.apache.struts2.components.ActionComponent.executeAction(ActionComponent.java:289)&lt;br /&gt; at org.apache.struts2.components.ActionComponent.end(ActionComponent.java:172)&lt;br /&gt; at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)&lt;br /&gt; at org.apache.jsp.index_jsp._jspx_meth_s_005faction_005f0(index_jsp.java:88)&lt;br /&gt; at org.apache.jsp.index_jsp._jspService(index_jsp.java:59)&lt;br /&gt; at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)&lt;br /&gt; at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)&lt;br /&gt; at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)&lt;br /&gt; at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)&lt;br /&gt; at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)&lt;br /&gt; at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)&lt;br /&gt; at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)&lt;br /&gt; at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)&lt;br /&gt; at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)&lt;br /&gt; at java.lang.Thread.run(Unknown Source)&lt;br /&gt;Oct 28, 2009 1:22:36 PM com.opensymphony.xwork2.util.logging.commons.CommonsLogger error&lt;br /&gt;SEVERE: Could not execute action: /ListingAction&lt;br /&gt;org.apache.jasper.JasperException: Expression parameters.pushId is undefined on line 24, column 6 in template/ajax/div-close.ftl. - Class: freemarker.core.TemplateObject&lt;br /&gt;File: TemplateObject.java&lt;br /&gt;Method: assertNonNull&lt;br /&gt;Line: 124 - freemarker/core/TemplateObject.java:124:-1&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)&lt;br /&gt; at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)&lt;br /&gt; at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)&lt;br /&gt; at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:611)&lt;br /&gt; at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:123)&lt;br /&gt; at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)&lt;br /&gt; at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)&lt;br /&gt; at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)&lt;br /&gt; at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)&lt;br /&gt; at org.apache.struts2.components.ActionComponent.executeAction(ActionComponent.java:289)&lt;br /&gt; at org.apache.struts2.components.ActionComponent.end(ActionComponent.java:172)&lt;br /&gt; at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)&lt;br /&gt; at org.apache.jsp.index_jsp._jspx_meth_s_005faction_005f0(index_jsp.java:88)&lt;br /&gt; at org.apache.jsp.index_jsp._jspService(index_jsp.java:59)&lt;br /&gt; at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)&lt;br /&gt; at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)&lt;br /&gt; at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt; at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)&lt;br /&gt; at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)&lt;br /&gt; at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)&lt;br /&gt; at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)&lt;br /&gt; at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)&lt;br /&gt; at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)&lt;br /&gt; at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)&lt;br /&gt; at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)&lt;br /&gt; at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)&lt;br /&gt; at java.lang.Thread.run(Unknown Source)&lt;br /&gt;Caused by: Expression parameters.pushId is undefined on line 24, column 6 in template/ajax/div-close.ftl. - Class: freemarker.core.TemplateObject&lt;br /&gt;File: TemplateObject.java&lt;br /&gt;Method: assertNonNull&lt;br /&gt;Line: 124 - freemarker/core/TemplateObject.java:124:-1&lt;br /&gt; at org.apache.struts2.components.UIBean.end(UIBean.java:515)&lt;br /&gt; at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspx_meth_s_005fdiv_005f0(listing_jsp.java:292)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspx_meth_s_005fform_005f0(listing_jsp.java:194)&lt;br /&gt; at org.apache.jsp.listing_jsp._jspService(listing_jsp.java:94)&lt;br /&gt; at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)&lt;br /&gt; at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)&lt;br /&gt; at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)&lt;br /&gt; ... 83 more&lt;br /&gt;Caused by: freemarker.core.InvalidReferenceException: Expression parameters.pushId is undefined on line 24, column 6 in template/ajax/div-close.ftl.&lt;br /&gt; at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)&lt;br /&gt; at freemarker.core.Expression.isTrue(Expression.java:145)&lt;br /&gt; at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:77)&lt;br /&gt; at freemarker.core.Environment.visit(Environment.java:209)&lt;br /&gt; at freemarker.core.MixedContent.accept(MixedContent.java:92)&lt;br /&gt; at freemarker.core.Environment.visit(Environment.java:209)&lt;br /&gt; at freemarker.core.Environment.process(Environment.java:189)&lt;br /&gt; at freemarker.template.Template.process(Template.java:237)&lt;br /&gt; at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:182)&lt;br /&gt; at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)&lt;br /&gt; at org.apache.struts2.components.UIBean.end(UIBean.java:513)&lt;br /&gt; ... 90 more&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="#2" name="#2"&gt;&lt;span style="font-weight:bold;"&gt;Solution:&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have noticed, there are 2 taglibs used in this JSP page. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;&lt;br /&gt;&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;&lt;br /&gt;&lt;%@ taglib prefix="sx" uri="/struts-dojo-tags" %&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here is the tag which is causing this error &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;&lt;br /&gt;&lt;br /&gt; &lt;s:div&lt;br /&gt;   showLoadingText="false" id="details" href="%{#autoex}" theme="ajax"&lt;br /&gt;   listenTopics="/show_detail" formId="frm_demo"/&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt; Instead of this tag, here we need to use the dojo taglib div tag which is prefixing with &lt;span style="font-weight:bold;"&gt;"sx"&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;pre name="code" class="Java"&gt;&lt;br /&gt;   &lt;br /&gt;  &lt;sx:div&lt;br /&gt;   showLoadingText="false" id="details" href="%{#autoex}" theme="ajax"&lt;br /&gt;   listenTopics="/show_detail" formId="frm_demo"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Clearly the Exception message "Expression parameters.pushId is undefined" had no relation to the problem, and thats the reason most of the people will have hard time figuring this out.&lt;br /&gt;The best way to start with Struts 2.18 would be to use the showcase application in the distribution and start building on top of it. '&lt;br /&gt;&lt;br /&gt;This was one of case where I have observed the error. In case you see this error on other places please share your experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-3140525809686436550?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qBBQpveGUxMs7SttCxFi3pU9v4I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qBBQpveGUxMs7SttCxFi3pU9v4I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qBBQpveGUxMs7SttCxFi3pU9v4I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qBBQpveGUxMs7SttCxFi3pU9v4I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=Z7nOlQEmN28:pBj1lhvNvtg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=Z7nOlQEmN28:pBj1lhvNvtg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=Z7nOlQEmN28:pBj1lhvNvtg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Z7nOlQEmN28:pBj1lhvNvtg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/3140525809686436550/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2009/10/struts-218-freemarker-template-error.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/3140525809686436550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/3140525809686436550?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2009/10/struts-218-freemarker-template-error.html" title="Struts 2.1.8 - FreeMarker template error! - Expression parameters.pushId is undefined" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;AkANQH09fip7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-9000958934354727854</id><published>2008-10-21T17:59:00.001-07:00</published><updated>2010-05-21T14:53:11.366-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:53:11.366-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Errors" /><title>Struts 2 Development - FreeMarker template error!</title><content type="html">I am getting  following error while using Struts 2 application. It does not trace back to my  code and my JSP syntax is correct too. Dont know what is causing this, any help  will be appreciated. I dont see any information or answers to this on google.  &lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Java"&gt;FreeMarker template error!

Expression error is undefined on line 35, column 4 in template/simple/actionerror.ftl.
The problematic instruction:
----------
==&gt; ${error} [on line 35, column 2 in template/simple/actionerror.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression error is undefined on line 35, column 4 in template/simple/actionerror.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
at freemarker.core.Expression.getStringValue(Expression.java:118)
at freemarker.core.Expression.getStringValue(Expression.java:93)
at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:160)
at freemarker.core.Environment.visit(Environment.java:351)
at freemarker.core.IteratorBlock.accept(IteratorBlock.java:95)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:196)
at freemarker.core.Environment.process(Environment.java:176)
at freemarker.template.Template.process(Template.java:232)
at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:168)
at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:530)
at org.apache.struts2.components.UIBean.end(UIBean.java:484)
at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:43)
at org.apache.jsp.input_jsp._jspx_meth_s_005factionerror_005f0(input_jsp.java:330)
at org.apache.jsp.input_jsp._jspService(input_jsp.java:223)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:139)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:186)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-9000958934354727854?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/csZbrDq5oFby2Z0JU5-Igt0i1vE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/csZbrDq5oFby2Z0JU5-Igt0i1vE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/csZbrDq5oFby2Z0JU5-Igt0i1vE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/csZbrDq5oFby2Z0JU5-Igt0i1vE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=lw511tYD2EE:28NGO4uz6JU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=lw511tYD2EE:28NGO4uz6JU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=lw511tYD2EE:28NGO4uz6JU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=lw511tYD2EE:28NGO4uz6JU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/9000958934354727854/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/10/struts-2-development-freemarker_21.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/9000958934354727854?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/9000958934354727854?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/10/struts-2-development-freemarker_21.html" title="Struts 2 Development - FreeMarker template error!" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;AkAERnoycSp7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-5092630043541578810</id><published>2008-08-29T19:48:00.000-07:00</published><updated>2010-05-21T14:51:47.499-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:51:47.499-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Struts 2" /><title>Backporting Struts 2 to JDK1.4 or JDK 1.3 using Retrotranslator</title><content type="html">Struts 2 framework and its dependencies available currently are compiled using JDK 1.5 and if you want to use same framework on JDK1.4 then you will require to backport these jars. Struts 2 framework core jars and its plugin jars can be translated to JDK 1.4 or 1.3 using Retrotranslator utility.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Retrotranslator is a open source project which does this translation. &lt;br /&gt;
&lt;br /&gt;
You can read more about this on http://retrotranslator.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Here are the steps to create the backport jars for JDK 1.4 or JDK 1.3&lt;br /&gt;
&lt;br /&gt;
1. Download Struts 2 - Alternative Java 4 JARs: from http://struts.apache.org.&lt;br /&gt;
This also contains the retrotanslator jar files&lt;br /&gt;
&lt;br /&gt;
2. Unzip the downloaded file, this should create backport folder containing core jars, and retrotranslation jar files.&lt;br /&gt;
&lt;br /&gt;
3. Now copy all your Struts 2 Jars (including dependancies) to a folder say (Struts2-1.5)&lt;br /&gt;
&lt;br /&gt;
4. Create another folder for converted jar files say (Struts2-1.4)&lt;br /&gt;
&lt;br /&gt;
5. Run below command for each jar in the Struts2-1.5 folder &lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code"&gt;java -jar retrotranslator-transformer-&lt;version&gt;.jar -advanced -srcjar Struts2-1.5/struts2-&lt;plugin&gt;-&lt;version&gt;.jar -destjar ./Struts2-1.4/struts2-&lt;plugin&gt;-&lt;version&gt;.jar
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Note: Replace the &lt;version&gt; &amp; &lt;plugin&gt; tokens with appropriate jar values. &lt;br /&gt;
Here are commands for struts 2.0.11.2 backporting&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Java"&gt;java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-core-2.0.11.2.jar -destjar Struts2-1.4/struts2-core-j4-2.0.11.2.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/xwork-2.0.5.jar -destjar Struts2-1.4/xwork-j4-2.0.5.jar 

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-codebehind.jar -destjar ./Struts2-1.4/struts2-codebehind.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-core.jar -destjar ./Struts2-1.4/struts2-core-1.4.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-spring.jar -destjar ./Struts2-1.4/struts2-spring.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-pell.jar -destjar ./Struts2-1.4/struts2-pell.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-plexus.jar -destjar ./Struts2-1.4/struts2-plexus.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-struts1.jar -destjar ./Struts2-1.4/struts2-struts1.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-jsf.jar -destjar ./Struts2-1.4/struts2-jsf.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-sitegraph.jar -destjar ./Struts2-1.4/struts2-sitegraph.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-sitemesh.jar -destjar ./Struts2-1.4/struts2-sitemesh.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-tiles.jar -destjar ./Struts2-1.4/struts2-tiles.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/struts2-config-browser.jar -destjar ./Struts2-1.4/struts2-config-browser.jar

java -jar retrotranslator-transformer-1.2.2.jar -advanced -srcjar Struts2-1.5/xwork-2.0.5.jar -destjar ./Struts2-1.4/xwork-2.0.5.jar


&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
6. This should create all your jars which are required for JDK 1.4. &lt;br /&gt;
&lt;br /&gt;
7. Make sure you delete all JDK 1.5 compiled jars from your application lib and replace it with translated jars for JDK 1.4. Keeping both may create unknown issues. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Retrotranslator is not limited to backporting the Struts 2 framework. Its a utility which can be utilized for backporting any JDK 1.5 compiled code to JDK 1.4.&lt;br /&gt;
&lt;div style='display:none'&gt;&lt;br /&gt;
Backporting Struts 2 to JDK 1.4, Back porting Struts 2 to JDK 1.3, Back Porting example, Backporting using retrotranslator, Backporting Struts 2 using Retrotranslator, retrotranslator for struts 2, backporting all struts 2 plugin, struts 2 back port example &lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-5092630043541578810?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tK-BKxHq6WB53KshZxCvtF-6vDs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tK-BKxHq6WB53KshZxCvtF-6vDs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tK-BKxHq6WB53KshZxCvtF-6vDs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tK-BKxHq6WB53KshZxCvtF-6vDs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=_HxuU0yuEGQ:G0AhzO-7LDs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=_HxuU0yuEGQ:G0AhzO-7LDs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=_HxuU0yuEGQ:G0AhzO-7LDs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_HxuU0yuEGQ:G0AhzO-7LDs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/5092630043541578810/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/backporting-struts-2-to-jdk14-using.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/5092630043541578810?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/5092630043541578810?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/backporting-struts-2-to-jdk14-using.html" title="Backporting Struts 2 to JDK1.4 or JDK 1.3 using Retrotranslator" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;AkAERns7eCp7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-3860915797121072410</id><published>2008-08-25T12:09:00.000-07:00</published><updated>2010-05-21T14:51:47.500-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:51:47.500-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Struts 2" /><title>How can you set devMode to dynamically load struts.xml file in Struts 2?</title><content type="html">The &lt;b&gt;constant&lt;/b&gt; element has a &lt;b&gt;name&lt;/b&gt; attribute and a &lt;b&gt;value&lt;/b&gt; attribute. The &lt;b&gt;&lt;font size="+0"&gt;struts&lt;/font&gt;.devMode&lt;/b&gt; setting determines whether or not the &lt;font size="+0"&gt;Struts&lt;/font&gt; application is in development mode. By default, the value is &lt;b&gt;false,&lt;/b&gt; meaning the application is not in development mode.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;The following &lt;b&gt;constant&lt;/b&gt; element sets &lt;b&gt;&lt;font size="+0"&gt;struts&lt;/font&gt;.devMode &lt;/b&gt;to &lt;b&gt;true&lt;/b&gt;.&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&amp;lt;&lt;font size="+0"&gt;struts&lt;/font&gt;&amp;gt;
&amp;lt;constant name=&amp;quot;&lt;font size="+0"&gt;struts&lt;/font&gt;.devMode&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;

...
&amp;lt;/&lt;font size="+0"&gt;struts&lt;/font&gt;&amp;gt;


&lt;/pre&gt;Once you set this attribute to &lt;b&gt;true&lt;/b&gt; Struts will check the config file for every request. This will save lot of development time as you need not restart server for struts.xml changes.&lt;br /&gt;
&lt;br /&gt;
Second way of setting this attribute is &lt;b&gt;&lt;font size="+0"&gt;struts&lt;/font&gt;.properties&lt;/b&gt; file which can overrides the value of&lt;b&gt; &lt;font size="+0"&gt;&lt;/font&gt;&lt;/b&gt;&lt;b&gt;default.properties&lt;/b&gt; file as below.  &lt;div&gt;&lt;pre&gt;&lt;font size="+0"&gt;struts&lt;/font&gt;.devMode = true&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
Third way to do it is as a init-param to filter tag in deployment descriptor (web.xml) file as shown below&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;filter&amp;gt;
&amp;lt;filter-name&amp;gt;&lt;font size="+0"&gt;struts&lt;/font&gt;&amp;lt;/filter-name&amp;gt;
&amp;lt;filter-class&amp;gt;
org.apache.struts2.dispatcher.FilterDispatcher
&amp;lt;/filter-class&amp;gt;
&lt;b&gt;    &amp;lt;init-param&amp;gt;&lt;/b&gt;
&lt;b&gt;        &amp;lt;param-name&amp;gt;&lt;font size="+0"&gt;struts&lt;/font&gt;.devMode&amp;lt;/param-name&amp;gt;&lt;/b&gt;
&lt;b&gt;        &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;/b&gt;
&lt;b&gt;    &amp;lt;/init-param&amp;gt;&lt;/b&gt;
&amp;lt;/filter&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style='display:none'&gt;&lt;br /&gt;
struts 2 development mode settings, struts 2 dev mode, loading struts.xml dynamically, dynamic configuration file loading struts 2, developer mode configuration setting &lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-3860915797121072410?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/od_ojslBU5s26ocKNbWT1MvJypA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/od_ojslBU5s26ocKNbWT1MvJypA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/od_ojslBU5s26ocKNbWT1MvJypA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/od_ojslBU5s26ocKNbWT1MvJypA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=BNoLhqykaR4:1e_iosp5fto:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=BNoLhqykaR4:1e_iosp5fto:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=BNoLhqykaR4:1e_iosp5fto:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=BNoLhqykaR4:1e_iosp5fto:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/3860915797121072410/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/how-can-you-set-devmode-to-dynamically.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/3860915797121072410?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/3860915797121072410?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/how-can-you-set-devmode-to-dynamically.html" title="How can you set devMode to dynamically load struts.xml file in Struts 2?" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEENQn05eCp7ImA9WxFXFE0.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-5947950527616280652</id><published>2008-08-21T17:18:00.000-07:00</published><updated>2010-05-20T17:44:53.320-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-20T17:44:53.320-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX" /><title>AJAX Example code showing XML response in a DIV tag</title><content type="html">This is an example code which demonstrates how we can show the response from a XML file to the DIV tag. &lt;br /&gt;
&lt;br /&gt;
&lt;pre name='code' class='xml'&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Using responseText with innerHTML&amp;lt;/title&amp;gt;
 
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
var xmlHttp;
 
function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;);
    }
    else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
}
 
function startRequest() {
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.open(&amp;quot;GET&amp;quot;, &amp;quot;response.xml&amp;quot;, true);
    xmlHttp.send(null);
}
 
function handleStateChange() {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            document.getElementById(&amp;quot;results&amp;quot;).innerHTML = xmlHttp.responseText;
        }
    }
}
&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
 
&amp;lt;body&amp;gt;
    &amp;lt;form action=&amp;quot;#&amp;quot;&amp;gt;
        &amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;Search&amp;quot;
                onclick=&amp;quot;startRequest();&amp;quot;/&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;div id=&amp;quot;results&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/pre&gt;&lt;br /&gt;
Notice the line in Javascript.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name='code' class='xml'&gt;document.getElementById("results").innerHTML = xmlHttp.responseText;
&lt;/pre&gt; &lt;br /&gt;
This is doing all the magic for you.&lt;br /&gt;
 &lt;br /&gt;
Below are the contents of reponse.xml&lt;br /&gt;
&lt;br /&gt;
&lt;pre name='code' class='xml'&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;
    &amp;lt;tbody&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th&amp;gt;My Name&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;Location&amp;lt;/th&amp;gt;
            &amp;lt;th&amp;gt;Age&amp;lt;/th&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;John&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;NH&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;Peter&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;CA&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;25&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;td&amp;gt;Hary&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;NC&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;33&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;

&lt;/pre&gt;&lt;br /&gt;
Keep both the files in the same directory on server and run it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-5947950527616280652?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xKM0i8Ziht6LvDRgCfrsaRfI1_c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xKM0i8Ziht6LvDRgCfrsaRfI1_c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xKM0i8Ziht6LvDRgCfrsaRfI1_c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xKM0i8Ziht6LvDRgCfrsaRfI1_c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=_CmxSkIy2vk:jf0MOZRop44:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=_CmxSkIy2vk:jf0MOZRop44:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=_CmxSkIy2vk:jf0MOZRop44:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=_CmxSkIy2vk:jf0MOZRop44:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/5947950527616280652/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/ajax-example-code-showing-xml-response.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/5947950527616280652?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/5947950527616280652?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/ajax-example-code-showing-xml-response.html" title="AJAX Example code showing XML response in a DIV tag" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DEYHQHs6fip7ImA9WxRTE08.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-106832668425769675</id><published>2008-08-21T16:53:00.000-07:00</published><updated>2008-09-01T20:28:51.516-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-01T20:28:51.516-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX" /><title>Hello World example - AJAX</title><content type="html">&lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial size=2&gt;Here is&amp;nbsp;example  code&amp;nbsp;which demonstrates&amp;nbsp;AJAX interaction displaying "Hello World"  along with the server response which is stored at server side in the file  serverResponse.xml&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;/SPAN&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT  face=Arial size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial size=2&gt;&lt;STRONG&gt;Contents of  HelloWorld.html&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV class='code'&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;&amp;lt;html&amp;gt;&lt;BR&gt;&amp;lt;head&amp;gt;&lt;BR&gt;&amp;lt;title&amp;gt;Simple  XMLHttpRequest&amp;lt;/title&amp;gt;&lt;BR&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;BR&gt;var  xmlHttp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;function createXMLHttpRequest() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if  (window.ActiveXObject) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttp =  new ActiveXObject("Microsoft.XMLHTTP");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (window.XMLHttpRequest)  {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttp = new  XMLHttpRequest();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;function startRequest() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  createXMLHttpRequest();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttp.onreadystatechange =  handleStateChange;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttp.open("GET",  "serverResponse.xml", true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  xmlHttp.send(null);&lt;BR&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;function handleStateChange() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  if(xmlHttp.readyState == 4) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  if(xmlHttp.status == 200)  {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  alert("Hello World: Response from server is - " +  xmlHttp.responseText);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;&amp;lt;/head&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;&amp;lt;body&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form  action="#"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input  type="button" value="Say  Hello"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  onclick="startRequest();"/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/form&amp;gt;&lt;BR&gt;&amp;lt;/body&amp;gt;&lt;BR&gt;&amp;lt;/html&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;FONT face=Arial size=2&gt;&lt;STRONG&gt;Contents of  serverResponse.xml&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV class='code'&gt;&lt;SPAN class=015494223-21082008&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;DIV&gt;&lt;SPAN class=015494223-21082008&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#0000ff  size=2&gt;Hello from Server!&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style='display:none'&gt;&lt;br /&gt;AJAX Hello world example, AJAX Hello world, Hello world AJAX, AJAX simple example, easy steps for AJAX, beginners AJAX, AJAX Example for beginners, AJAX from scratch, AJAX in Action, Simple AJAX examples&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-106832668425769675?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/B3s1KqQp_vkpf7AoImKhAFUhj1g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B3s1KqQp_vkpf7AoImKhAFUhj1g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/B3s1KqQp_vkpf7AoImKhAFUhj1g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/B3s1KqQp_vkpf7AoImKhAFUhj1g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=GlxCeDFUNzg:qhTuLE-chmc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=GlxCeDFUNzg:qhTuLE-chmc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=GlxCeDFUNzg:qhTuLE-chmc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=GlxCeDFUNzg:qhTuLE-chmc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/106832668425769675/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/hello-world-example-ajax.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/106832668425769675?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/106832668425769675?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/hello-world-example-ajax.html" title="Hello World example - AJAX" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEUBR389fyp7ImA9WxRTE08.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-5170040358561499385</id><published>2008-08-21T16:08:00.000-07:00</published><updated>2008-09-01T20:30:56.167-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-01T20:30:56.167-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX" /><title>What are the status values you need to deal with when working with AJAX</title><content type="html">&lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;The XMLHttpRequest  object has few properties &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;onreadystatechange:  The event handler that fires at every state change, typically a call to a  JavaScript function.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;readyState: The  state of the request. The five possible values are 0 = uninitialized, 1 =  loading, 2 = loaded, 3 = interactive, and 4 = complete.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;responseText: The  response from the server as a string.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;responseXML: The  response from the server as XML. This object can be parsed and examined as a DOM  object.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;status: The HTTP  status code from the server (that is, 200 for OK, 404 for Not Found, and so  on).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;statusText: The text  version of the HTTP status code (that is, OK or Not Found, and so  on).&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial size=2&gt;Here is a example  code which demonstrates how these atributes can be used&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV class='code'&gt;&lt;SPAN class=625225922-21082008&gt;&lt;FONT face=Arial  size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;DIV&gt;&lt;SPAN class=625225922-21082008&gt;&lt;PRE class=programlisting&gt;&lt;FONT color=#0000ff&gt;function doSomething() {&lt;BR&gt;&amp;nbsp;//..do something here, like adding parameter values etc...&lt;BR&gt;&amp;nbsp;xmlHttp.open("GET", url);&lt;BR&gt;&amp;nbsp;xmlHttp.onreadystatechange = callback;&lt;BR&gt;&amp;nbsp;xmlHttp.send(null);&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE class=programlisting&gt;&lt;FONT color=#0000ff&gt;function callback() {&lt;BR&gt;&amp;nbsp; if (xmlHttp.readyState == 4) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (xmlHttp.status == 200) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //do you required work here&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE class=programlisting&gt;&amp;nbsp;&lt;/PRE&gt;&lt;/DIV&gt;&lt;PRE class=programlisting&gt;Notice the line &lt;/PRE&gt;&lt;PRE class=programlisting&gt;&lt;PRE class=programlisting&gt;&lt;FONT color=#0000ff&gt;xmlHttp.onreadystatechange = callback;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE class=programlisting&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=programlisting&gt;in doSomething method which is assigning a value as "callback" to the onreadystatechange attribute. &lt;/PRE&gt;&lt;PRE class=programlisting&gt;The value is name of a method which called every time readystate of XMLHttpRequest object is changed.&lt;/PRE&gt;&lt;PRE class=programlisting&gt;&amp;nbsp;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style='display:none'&gt;&lt;br /&gt;AJAX request status, AJAX code example, AJAX code for checking status values of http request object, AJAX programming check of http request, working with request status in AJAX  &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-5170040358561499385?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JB5glI3qvFYseWgzF3RkYOcDBEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JB5glI3qvFYseWgzF3RkYOcDBEw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JB5glI3qvFYseWgzF3RkYOcDBEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JB5glI3qvFYseWgzF3RkYOcDBEw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=5r-U65j0t4M:NIWxFX3UsrM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=5r-U65j0t4M:NIWxFX3UsrM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=5r-U65j0t4M:NIWxFX3UsrM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=5r-U65j0t4M:NIWxFX3UsrM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/5170040358561499385/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/what-are-status-values-you-need-to-deal.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/5170040358561499385?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/5170040358561499385?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/what-are-status-values-you-need-to-deal.html" title="What are the status values you need to deal with when working with AJAX" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ak8DQnk8fSp7ImA9WxdaFEs.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-8795818405985489182</id><published>2008-08-21T15:58:00.000-07:00</published><updated>2008-08-22T22:21:13.775-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-22T22:21:13.775-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="AJAX" /><title>How to Create an Instance of the XMLHttpRequest Object - AJAX</title><content type="html">&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;XMLHttpRequest is backbone of AJAX  framework.&amp;nbsp;&lt;SPAN class=656275522-21082008&gt;We have to &lt;/SPAN&gt;first create an  XMLHttpRequest object using JavaScript before&amp;nbsp;&lt;SPAN  class=656275522-21082008&gt;we &lt;/SPAN&gt;can use the object to send  request.&amp;nbsp;&lt;SPAN class=656275522-21082008&gt;Y&lt;/SPAN&gt;ou can use JavaScript in a  couple of ways to create an instance of XMLHttpRequest. Internet Explorer  implements XMLHttpRequest as an ActiveX object, and other browsers such as  Firefox, Safari, and Opera implement it as a native JavaScript object. Because  of these differences, the JavaScript code must contain logic to create an  instance of XMLHttpRequest using the ActiveX technique or using the native  JavaScript object technique.&lt;/FONT&gt;&lt;/DIV&gt; &lt;DIV class='code'&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;FONT face=Arial size=2&gt; &lt;DIV&gt;var xmlHttp;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;function createXMLHttpRequest() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if  (window.ActiveXObject) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttp =  new ActiveXObject("Microsoft.XMLHTTP");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (window.XMLHttpRequest)  {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlHttp = new  XMLHttpRequest();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-8795818405985489182?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eCUPIoOYtSiysxmCt2VWYO_k-yc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eCUPIoOYtSiysxmCt2VWYO_k-yc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eCUPIoOYtSiysxmCt2VWYO_k-yc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eCUPIoOYtSiysxmCt2VWYO_k-yc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=H5UGbJJMCoE:KAoMKgKG9sw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=H5UGbJJMCoE:KAoMKgKG9sw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=H5UGbJJMCoE:KAoMKgKG9sw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=H5UGbJJMCoE:KAoMKgKG9sw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/8795818405985489182/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/how-to-create-instance-of.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/8795818405985489182?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/8795818405985489182?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/how-to-create-instance-of.html" title="How to Create an Instance of the XMLHttpRequest Object - AJAX" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkEDRH88eip7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-8670725248655624310</id><published>2008-08-07T16:30:00.000-07:00</published><updated>2010-05-21T14:51:15.172-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:51:15.172-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><title>Struts 2 Integer Validation Example</title><content type="html">&lt;div style='display:none'&gt;&lt;br /&gt;integer validation example struts 2, struts 2 integer validation, number validating struts 2, regular expression validation struts 2, struts 2 validator&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The validator type "int" in struts 2 is a range validator. It does not validate if the input is a valid integer. Therefore we would require to use regular expression to validate the integer. This example considers zip Code field which should be a valid integer.&lt;br /&gt;&lt;br /&gt;This example uses AJAX for displaying the result on the same page. The contents of output.jsp are shown if the input validation passes. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;MyAction.java&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;  &lt;br /&gt;public class MyAction extends ActionSupport {&lt;br /&gt;&lt;br /&gt;    private String zipCode;&lt;br /&gt;&lt;br /&gt;    public String execute() throws Exception {&lt;br /&gt;&lt;br /&gt;        return SUCCESS;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getZipCode() {&lt;br /&gt;&lt;br /&gt;        return zipCode;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setZipCode(String zipCode) {&lt;br /&gt;&lt;br /&gt;        this.zipCode=zipCode;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;MyAction-validation.xml&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;  &lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"&lt;br /&gt;"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"&gt;&lt;br /&gt;&lt;br /&gt;&lt;validators&gt;&lt;br /&gt;&lt;br /&gt;    &lt;validator type="regex"&gt;&lt;br /&gt;&lt;br /&gt;        &lt;param name="fieldName"&gt;zipCode&lt;/param&gt;&lt;br /&gt;        &lt;param name="expression"&gt;&lt;![CDATA[^\d*$]]&gt;&lt;/param&gt;&lt;br /&gt;        &lt;message&gt;Zip code should be a valid number&lt;/message&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/validator&gt;&lt;br /&gt;&lt;br /&gt;&lt;/validators&gt;&lt;br /&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;input.jsp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;  &lt;br /&gt;&amp;lt;%@ page language=&amp;quot;java&amp;quot; contentType=&amp;quot;text/html; charset=ISO-8859-1&amp;quot; pageEncoding=&amp;quot;ISO-8859-1&amp;quot;%&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;%@ taglib prefix=&amp;quot;s&amp;quot; uri=&amp;quot;/struts-tags&amp;quot;%&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/loose.dtd&amp;quot;&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;html&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;head&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=ISO-8859-1&amp;quot;&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;s:head theme=&amp;quot;ajax&amp;quot; /&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;title&amp;gt;Integer Validation Test&amp;lt;/title&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;/head&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;body&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;s:actionerror /&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;s:fielderror /&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;s:div id=&amp;quot;showResult&amp;quot; theme=&amp;quot;ajax&amp;quot; loadingText=&amp;quot;Loading...&amp;quot; /&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;s:form id=&amp;quot;myAction&amp;quot; action=&amp;quot;myAction&amp;quot; method=&amp;quot;post&amp;quot;&lt;br/&gt;&lt;br/&gt;validate=&amp;quot;true&amp;quot;&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;s:textfield key=&amp;quot;addressLine1&amp;quot; label=&amp;quot;Address Line 1&amp;quot; labelposition=&amp;quot;left&amp;quot; cssStyle=&amp;quot;size: 15&amp;quot;&amp;gt;&amp;lt;/s:textfield&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;s:textfield key=&amp;quot;addressLine2&amp;quot; label=&amp;quot;Address Line 2&amp;quot; labelposition=&amp;quot;left&amp;quot; cssStyle=&amp;quot;size: 15&amp;quot;&amp;gt;&amp;lt;/s:textfield&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;s:textfield key=&amp;quot;city&amp;quot; label=&amp;quot;City&amp;quot; labelposition=&amp;quot;left&amp;quot; cssStyle=&amp;quot;size: 15&amp;quot;&amp;gt;&amp;lt;/s:textfield&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;s:textfield key=&amp;quot;state&amp;quot; label=&amp;quot;State&amp;quot; labelposition=&amp;quot;left&amp;quot; cssStyle=&amp;quot;size: 15&amp;quot;&amp;gt;&amp;lt;/s:textfield&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;s:textfield key=&amp;quot;zipCode&amp;quot; label=&amp;quot;Zip Code&amp;quot; labelposition=&amp;quot;left&amp;quot; cssStyle=&amp;quot;size: 15&amp;quot; required=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/s:textfield&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;s:textfield key=&amp;quot;country&amp;quot; label=&amp;quot;Country&amp;quot; labelposition=&amp;quot;left&amp;quot; cssStyle=&amp;quot;size: 15&amp;quot;&amp;gt;&amp;lt;/s:textfield&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;s:submit theme=&amp;quot;ajax&amp;quot; targets=&amp;quot;showResult&amp;quot; /&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;/s:form&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;/body&amp;gt;&lt;br/&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;output.jsp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;  &lt;br /&gt;&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"&lt;br /&gt;pageEncoding="ISO-8859-1"%&gt;&lt;br /&gt;&lt;br /&gt;&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;&lt;br /&gt;&lt;br /&gt;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;    Valid Data Entered !!&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;struts.xml&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" &lt;br /&gt;"http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;struts&gt;&lt;br /&gt;&lt;package name="licensemanager" extends="struts-default"&gt;&lt;br /&gt;    &lt;action name="myAction" class="MyAction" &gt;&lt;br /&gt;        &lt;result name="success"&gt;/output.jsp&lt;/result&gt;&lt;br /&gt;        &lt;result name="input"&gt;/input.jsp&lt;/result&gt;&lt;br /&gt;    &lt;/action&gt;&lt;br /&gt;&lt;/package&gt;&lt;br /&gt;&lt;br /&gt;&lt;/struts&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-8670725248655624310?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xy-RGqmHGYrAwb7RGsKSHaP8its/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xy-RGqmHGYrAwb7RGsKSHaP8its/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xy-RGqmHGYrAwb7RGsKSHaP8its/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xy-RGqmHGYrAwb7RGsKSHaP8its/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=uphCLXJBwI8:KYj1yn2qYc0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=uphCLXJBwI8:KYj1yn2qYc0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=uphCLXJBwI8:KYj1yn2qYc0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uphCLXJBwI8:KYj1yn2qYc0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/8670725248655624310/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/struts-2-integer-validation-example.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/8670725248655624310?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/8670725248655624310?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/struts-2-integer-validation-example.html" title="Struts 2 Integer Validation Example" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;AkECQXgzfSp7ImA9WxFXFEo.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-7856893840434343385</id><published>2008-08-02T15:25:00.000-07:00</published><updated>2010-05-21T14:51:00.685-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-21T14:51:00.685-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>Struts 1 vs Struts 2</title><content type="html">Here are few comparison of Jakarta Struts framework version 1.X and 2.X&lt;br /&gt;The entire approach has been changed in Struts 2 by introduction of dependency injection and interceptors. Here are few key differences...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;1.  Servlet Dependency:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Actions in Struts1 have dependencies on the servlet API since the HttpServletRequest and HttpServletResponse objects are passed to the execute method when an Action is invoked.&lt;br /&gt;&lt;br /&gt; In case of Struts 2, Actions are not container dependent because they are made simple POJOs. In struts 2, the servlet contexts are represented as simple Maps which allows actions to be tested in isolation. Struts 2 Actions can access the original request and response, if required. However, other architectural elements reduce or eliminate the need to access the HttpServetRequest or HttpServletResponse directly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.  Action classes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Struts 1 requires Action classes to extend an abstract base class. Extending an abstract class instead of interface is one of design issues of struts 1.x framework that has been resolved in the struts 2 framework. &lt;br /&gt;In case of Struts 2 Action class may or may not implement interfaces to enable optional and custom services. In case of Struts 2 , Actions are not container dependent because they are made simple POJOs. Struts 2 provides a base ActionSupport class to implement commonly used interfaces. Albeit, the Action interface is not required. Any POJO object with an execute signature can be used as an Struts 2 Action object. Struts 2 also provides a way to maintain action objects using spring container.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;3.  Validation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Struts1 and Struts 2 both supports the manual validation via a validate method.&lt;br /&gt;Struts1 uses validate method on the ActionForm, or validates through an extension to the Commons Validator. However, Struts 2 supports manual validation via the validate method and the XWork Validation framework. The Xwork Validation Framework supports chaining validation into sub-properties using the validations defined for the properties class type and the validation context.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4.  Threading Model&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Struts1, Action resources must be thread-safe or synchronized. So Actions are singletons and thread-safe, there should only be one instance of a class to handle all requests for that Action. The singleton strategy places restrictions on what can be done with Struts1 Actions and requires extra care to develop. However in case of Struts 2, Action objects are instantiated for each request, so there are no thread-safety issues. (In practice, servlet containers generate many throw-away objects per request, and one more object does not impose a performance penalty or impact garbage collection.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5.  Testability&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Testing Struts1 applications are a bit complex. A major hurdle to test Struts1 Actions is that the execute method because it exposes the Servlet API. A third-party extension, Struts TestCase, offers a set of mock object for Struts1. But the Struts 2 Actions can be tested by instantiating the Action, setting properties and invoking methods. Dependency Injection support also makes testing simpler. Actions in struts2 are simple POJOs and are framework independent,  hence testability is quite easy in struts2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6.  Harvesting Input&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Struts1 uses an ActionForm object to capture input. And all ActionForms needs to extend a framework dependent base class. JavaBeans cannot be used as ActionForms, so the developers have to create redundant classes to capture input. &lt;br /&gt;However Struts 2 uses Action properties (as input properties independent of underlying framework) that eliminates the need for a second input object, hence reduces redundancy. Additionally in struts2, Action properties can be accessed from the web page via the taglibs. Struts 2 also supports the ActionForm pattern, as well as POJO form objects and POJO Actions. Even rich object types, including business or domain objects, can be used as input/output objects.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7.  Expression Language&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Struts1 integrates with JSTL, so it uses the JSTL-EL. The struts1 EL has basic object graph traversal, but relatively weak collection and indexed property support. Struts 2 can also use JSTL, however it supports a more powerful and flexible expression language called "Object Graph Notation Language" (OGNL).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;8.  Binding values into views&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the view section, Struts1 uses the standard JSP mechanism to bind objects (processed from the model section) into the page context to access. However Struts 2 uses a "ValueStack" technology so that the taglibs can access values without coupling your view to the object type it is rendering. The ValueStack strategy allows the reuse of views across a range of types which may have the same property name but different property types.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;9.  Type Conversion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Usually, Struts1 ActionForm properties are all Strings. Struts1 uses Commons-Beanutils for type conversion. These type converters are per-class and not configurable per instance. However Struts 2 uses OGNL for type conversion. The framework includes converters for basic and common object types and primitives.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;10.  Control Of Action Execution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Struts1 supports separate Request Processor (lifecycles) for each module, but all the Actions in a module must share the same lifecycle. However Struts 2 supports creating different lifecycles on a per Action basis via Interceptor Stacks. Custom stacks can be created and used with different Actions as needed.&lt;br /&gt;&lt;br /&gt;&lt;div style='display:none'&gt;&lt;br /&gt;Comparison of struts 2 with struts 1, comparing struts 1 and Struts 2, struts 1 or struts 2 which one to use, struts 2 vs struts 1&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-7856893840434343385?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PBo9_O0sN83Loxr5FBIoyTue_QU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PBo9_O0sN83Loxr5FBIoyTue_QU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PBo9_O0sN83Loxr5FBIoyTue_QU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PBo9_O0sN83Loxr5FBIoyTue_QU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=Zy6-llSmxyw:t-LzXlcO0sg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=Zy6-llSmxyw:t-LzXlcO0sg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=Zy6-llSmxyw:t-LzXlcO0sg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=Zy6-llSmxyw:t-LzXlcO0sg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/7856893840434343385/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/08/struts-1-vs-struts-2.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/7856893840434343385?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/7856893840434343385?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/08/struts-1-vs-struts-2.html" title="Struts 1 vs Struts 2" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEUCQXw7fyp7ImA9Wx9RFkw.&quot;"><id>tag:blogger.com,1999:blog-651718361609345073.post-4057052117066057247</id><published>2008-07-17T15:43:00.000-07:00</published><updated>2010-12-17T12:04:20.207-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-17T12:04:20.207-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Struts 2" /><category scheme="http://www.blogger.com/atom/ns#" term="AJAX" /><title>Struts 2 - AJAX Drop down Example</title><content type="html">&lt;div style='display:none;'&gt;&lt;br /&gt;
Struts2 AJAX Drop down Example, struts2 ajax auto populate drop down, struts2 ajax auto select drop down, Struts2 AJAX Example, Struts2 AJAX Drop down sample Code, Struts 2, beginners example for struts2, struts2 simple application,struts2 with ajax&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Struts 2 is a powerful web application development framework. Its built on top of WebWork framework and rebranded as Struts 2. Due to excessive popularity of Struts 1 its difficult to search for much relevant documentation on web about struts2. Slowly the search engines are improving on that.&lt;br /&gt;
&lt;br /&gt;
In this example when you select from one drop down the other will populate accordingly. You can use it as is or play around with it based on your need&lt;br /&gt;
[&lt;a href="http://www.fromdev.com/2008/07/struts-2-ajax-drop-down-example_6449.html"&gt;Continue Reading&lt;/a&gt;]&lt;br /&gt;
&lt;br /&gt;
&lt;div style='display:none'&gt;&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;Index.jsp&lt;/span&gt;&lt;br /&gt;
&lt;pre name='code' class='java'&gt;&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;
&lt;s:action name="ListingAction" executeResult="true"&gt;&lt;/s:action&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;Listing.jsp&lt;/span&gt;&lt;br /&gt;
&lt;pre name='code' class='java'&gt;&amp;lt;%@ taglib prefix="s"  uri="/struts-tags"%&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;head&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:head theme="ajax"  /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;title&amp;gt;Listing&amp;lt;/title&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/head&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  function show_details() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;  dojo.event.topic.publish("show_detail");
&amp;nbsp;&amp;nbsp;&amp;nbsp;  }
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:form id="frm_demo" name="frm_demo"  theme="simple"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table  border="0"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;td&amp;gt;&amp;lt;s:select list="lstList1" name="lst"
&amp;nbsp;&amp;nbsp;&amp;nbsp;  onchange="javascript:show_details();return false;"  &amp;gt;&amp;lt;/s:select&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;td&amp;gt;&amp;lt;s:url id="d_url" action="DetailAction" /&amp;gt; &amp;lt;s:div  showLoadingText="false"
&amp;nbsp;&amp;nbsp;&amp;nbsp; id="details" href="%{d_url}"  theme="ajax"
&amp;nbsp;&amp;nbsp;&amp;nbsp; listenTopics="show_detail"  formId="frm_demo"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/s:div&amp;gt;&amp;lt;/td&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/tr&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/s:form&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;Detail.jsp&lt;/span&gt;&lt;br /&gt;
&lt;pre name='code' class='java'&gt;&lt;%@ taglib prefix="s" uri="/struts-tags"%&gt;

&lt;s:if test="lstList != null"&gt;
&lt;s:select list="lstList"&gt;&lt;/s:select&gt;
&lt;/s:if&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;DetailAction.java&lt;/span&gt;&lt;br /&gt;
&lt;pre name='code' class='java'&gt;package ajaxdemo.action;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

public class DetailAction extends ActionSupport {
private String lst;
private List lstList = null;
private List lstList2 = null;

public String execute() throws Exception {

if (getLst() != null &amp;&amp; !getLst().equals("")) {
populateDetail(getLst());
return SUCCESS;
} else {
return SUCCESS;
}
}

private void populateDetail(String id) {
lstList = new ArrayList();
if (id.equalsIgnoreCase("Fruits")) {
lstList.add("Apple");
lstList.add("PineApple");
lstList.add("Mango");
lstList.add("Banana");
lstList.add("Grapes");
} else if (id.equalsIgnoreCase("Places")) {
lstList.add("New York");
lstList.add("Sydney");
lstList.add("California");
lstList.add("Switzerland");
lstList.add("Paris");
} else {
lstList.add("Other 1");
lstList.add("Other 2");
lstList.add("Other 3");
lstList.add("Other 4");
lstList.add("Other 5");
}
}

public List getLstList() {
return lstList;
}

public void setLstList(List lstList) {
this.lstList = lstList;
}

public String getLst() {
return lst;
}

public void setLst(String lst) {
this.lst= lst;
}
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;DetailListing.java&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name='code' class='java'&gt;package ajaxdemo.action;

import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;

public class ListingAction extends ActionSupport {
private List lstList1 = null;

public String execute() throws Exception {
populateDetail();
return SUCCESS;
}

private void populateDetail() {
lstList1 = new ArrayList();
lstList1.add("Fruits");
lstList1.add("Places");
lstList1.add("Others");

}

public List getLstList1() {
return lstList1;
}

public void setLstList1(List lstList1) {
this.lstList1 = lstList1;
}
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;Struts.xml&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name='code' class='xml'&gt;&amp;lt;!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;
&lt;struts&gt;
&lt;package name="demo" extends="struts-default"&gt;
&lt;action name="ListingAction" class="ajaxdemo.action. ListingAction"&gt;
&lt;result&gt;/listing.jsp&lt;/result&gt;
&lt;/action&gt;
&lt;action name="DetailAction" class="ajaxdemo.action. DetailAction"&gt;
&lt;result&gt;/detail.jsp&lt;/result&gt;
&lt;/action&gt;
&lt;/package&gt;
&lt;/struts&gt; 
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight:bold;"&gt;web.xml&lt;/span&gt;&lt;br /&gt;
&lt;pre name='code' class='xml'&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&amp;gt;
&lt;filter&gt;
&lt;filter-name&gt;struts2&lt;/filter-name&gt;
&lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;struts2&lt;/filter-name&gt;
&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
&lt;welcome-file-list&gt;
&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
&lt;/welcome-file-list&gt;
&lt;/web-app&gt; 
&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/651718361609345073-4057052117066057247?l=struts.fromdev.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6nVH9mBCaw0_SyA9P3dXM206vvE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6nVH9mBCaw0_SyA9P3dXM206vvE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6nVH9mBCaw0_SyA9P3dXM206vvE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6nVH9mBCaw0_SyA9P3dXM206vvE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=uUY4FtkUmwQ:oPamelCxiYM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=uUY4FtkUmwQ:oPamelCxiYM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?i=uUY4FtkUmwQ:oPamelCxiYM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Struts2Developers?a=uUY4FtkUmwQ:oPamelCxiYM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Struts2Developers?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://struts.fromdev.com/feeds/4057052117066057247/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://struts.fromdev.com/2008/07/struts-2-ajax-drop-down-example.html#comment-form" title="25 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/4057052117066057247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/651718361609345073/posts/default/4057052117066057247?v=2" /><link rel="alternate" type="text/html" href="http://struts.fromdev.com/2008/07/struts-2-ajax-drop-down-example.html" title="Struts 2 - AJAX Drop down Example" /><author><name>Sachin</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="25" height="32" src="http://4.bp.blogspot.com/_hpoWLUUuwbc/SePLc4ETZMI/AAAAAAAAAZY/OrHQKzKKK9o/S220/pokemon_trainer_070813a-l.jpg" /></author><thr:total>25</thr:total></entry></feed>

