<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="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" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-9014076727113754138</atom:id><lastBuildDate>Thu, 16 Feb 2012 10:58:42 +0000</lastBuildDate><category>struts 2 plugin</category><category>struts 2 validation</category><category>struts 2 framework</category><category>other</category><category>demo</category><category>help</category><title>Struts 2</title><description>All About Struts 2</description><link>http://struts-2.blogspot.com/</link><managingEditor>noreply@blogger.com (sandy)</managingEditor><generator>Blogger</generator><openSearch:totalResults>16</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/rss+xml" href="http://feeds.feedburner.com/blogspot/struts-2" /><feedburner:info uri="blogspot/struts-2" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-2210859635251331431</guid><pubDate>Fri, 16 Nov 2007 05:15:00 +0000</pubDate><atom:updated>2007-11-16T10:49:38.406+05:30</atom:updated><title>Ajax File Upload</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rpDG9fvNZZPkHXMqIJlX75Ljk6A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rpDG9fvNZZPkHXMqIJlX75Ljk6A/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/rpDG9fvNZZPkHXMqIJlX75Ljk6A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rpDG9fvNZZPkHXMqIJlX75Ljk6A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;checkout the ajax file upload in struts 2&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.davidjc.com/ajaxfileupload/demo!input.action"&gt;click here&lt;/a&gt; to view&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-2210859635251331431?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/sxElUfvCvxw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/sxElUfvCvxw/ajax-file-upload.html</link><author>noreply@blogger.com (sandy)</author><thr:total>41</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/11/ajax-file-upload.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-1720361390743663323</guid><pubDate>Fri, 16 Nov 2007 04:56:00 +0000</pubDate><atom:updated>2007-11-16T10:27:10.244+05:30</atom:updated><title>Apache Tiles 2 plugin</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TQfvWw-rlaupSazMKfiqD2R2zwc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TQfvWw-rlaupSazMKfiqD2R2zwc/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/TQfvWw-rlaupSazMKfiqD2R2zwc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TQfvWw-rlaupSazMKfiqD2R2zwc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;hi guys...&lt;br /&gt;the tiles 2 support for the inelliJ IDEA is out...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://plugins.intellij.net/plugin/?id=1775"&gt;click here&lt;/a&gt; to view&lt;br /&gt;&lt;br /&gt;checkout the link&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-1720361390743663323?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/px5lJLXKlDI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/px5lJLXKlDI/apache-tiles-2-plugin.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/11/apache-tiles-2-plugin.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-9050490696213866862</guid><pubDate>Fri, 16 Nov 2007 04:33:00 +0000</pubDate><atom:updated>2007-11-16T10:05:45.748+05:30</atom:updated><title>struts 2 plugin</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RyjIGdtq7GkjyiwM_yPlS_9oXng/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RyjIGdtq7GkjyiwM_yPlS_9oXng/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/RyjIGdtq7GkjyiwM_yPlS_9oXng/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RyjIGdtq7GkjyiwM_yPlS_9oXng/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;hi guys good news...&lt;br /&gt;now finally IntelliJ IDEA has announced the struts 2 support...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jetbrains.net/confluence/display/CONTEST/Struts2Plugin"&gt;click here&lt;/a&gt; to download the plugin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-9050490696213866862?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/mAfxNW6fByk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/mAfxNW6fByk/struts-2-plugin.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/11/struts-2-plugin.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-6029352314984727833</guid><pubDate>Thu, 15 Nov 2007 07:11:00 +0000</pubDate><atom:updated>2010-05-08T13:20:59.043+05:30</atom:updated><title>Dependency Injection in Struts 2</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0KDDrwYDl1dhM5099cuuwNm9Hqs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0KDDrwYDl1dhM5099cuuwNm9Hqs/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/0KDDrwYDl1dhM5099cuuwNm9Hqs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0KDDrwYDl1dhM5099cuuwNm9Hqs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;hi friends ,&lt;br /&gt;
i have created a demo of how dependency injection work,&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.ziddu.com/download/9774974/Struts2DependencyInjection.tar.gz.html"&gt;click here&amp;nbsp;&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="http://cid-f7505796aa662c71.skydrive.live.com/self.aspx/Public/demo/struts%202/Struts2DependencyInjection.tar.gz"&gt;download&lt;/a&gt;&amp;nbsp;it from here&lt;br /&gt;
&lt;br /&gt;
please let me know where i have miss anything, I am just learning now,&lt;br /&gt;
so hope to get some suggestion on it,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-6029352314984727833?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/jxglZBeJYxk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/jxglZBeJYxk/dependency-injection-in-struts-2.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/11/dependency-injection-in-struts-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-68083299676747266</guid><pubDate>Mon, 12 Nov 2007 05:25:00 +0000</pubDate><atom:updated>2007-11-12T11:09:11.898+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 plugin</category><title>Difference between Tiles 1 and Tiles 2</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Njw77mL5BHzBEN2hdrwsgso4_D8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Njw77mL5BHzBEN2hdrwsgso4_D8/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/Njw77mL5BHzBEN2hdrwsgso4_D8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Njw77mL5BHzBEN2hdrwsgso4_D8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The main diffrence between tiles1 and tiles2 is that,&lt;br /&gt;Tiles 1 was mainly dependent on the struts. While Tiles 2 can be used with the other framework like struts 2, JSF, Shale, etc..&lt;br /&gt;&lt;br /&gt;for more detail info you can visit this page...&lt;br /&gt;&lt;a href="http://www.developer.com/open/article.php/3697171"&gt;Use Tiles Decorations; Reduce Configuration&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-68083299676747266?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/D9hVlclcj5s" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/D9hVlclcj5s/difference-between-tiles-1-and-tiles-2.html</link><author>noreply@blogger.com (sandy)</author><thr:total>2</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/11/difference-between-tiles-1-and-tiles-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-6275751287066103348</guid><pubDate>Fri, 26 Oct 2007 06:33:00 +0000</pubDate><atom:updated>2010-05-08T13:20:22.875+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 validation</category><category domain="http://www.blogger.com/atom/ns#">demo</category><title>Ajax validation in struts 2</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/peG5ieOptuJ3xRgURg-99GYHoc4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/peG5ieOptuJ3xRgURg-99GYHoc4/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/peG5ieOptuJ3xRgURg-99GYHoc4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/peG5ieOptuJ3xRgURg-99GYHoc4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi Friends,&lt;br /&gt;
&lt;br /&gt;
I have developed a demo on struts 2 and dwr based ajax validation on struts 2 simple theme,&lt;br /&gt;
&lt;br /&gt;
hope you'll all like it,&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.ziddu.com/download/9774975/struts2-ajaxValidation-dwr.tar.gz.html" target="_blank"&gt;click here&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="http://cid-f7505796aa662c71.skydrive.live.com/self.aspx/Public/demo/struts%202/struts2-ajaxValidation-dwr.tar.gz" target="_blank"&gt;click here&lt;/a&gt; to download it&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-6275751287066103348?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/T4KAslNyXzY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/T4KAslNyXzY/hi-friends-i-have-developed-demo-on.html</link><author>noreply@blogger.com (sandy)</author><thr:total>2</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/hi-friends-i-have-developed-demo-on.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-8307668046609686236</guid><pubDate>Mon, 22 Oct 2007 09:02:00 +0000</pubDate><atom:updated>2007-11-12T11:09:45.512+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">help</category><title>Help on struts 2</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PQ3pZlS1N9ERNFly1YmWFYa1-9w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PQ3pZlS1N9ERNFly1YmWFYa1-9w/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/PQ3pZlS1N9ERNFly1YmWFYa1-9w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PQ3pZlS1N9ERNFly1YmWFYa1-9w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;To download the Struts 2 pdf help document &lt;a href="http://groups.google.com/group/struts-2/web/startingstruts2online.pdf"&gt;click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are many resources are available on strut 2, some of them are listed below :&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 10);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="www.roseindia.net/struts/struts2/"&gt;&lt;span style="font-size:-1;"&gt;&lt;span class="a"&gt;www.roseindia.net/&lt;b&gt;struts&lt;/b&gt;/&lt;b&gt;struts&lt;/b&gt;&lt;b&gt;2&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:-1;"&gt;&lt;span class="a"&gt;&lt;a href="www.infoq.com/minibooks/starting-struts2"&gt;www.infoq.com/minibooks/starting-&lt;b&gt;struts&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;a href="www.infoq.com/minibooks/starting-struts2"&gt;2&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:-1;"&gt;&lt;span class="a"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:-1;"&gt;&lt;span class="a"&gt;&lt;a href="http://cwiki.apache.org/WW/home.html"&gt; http://cwiki.apache.org/WW/home.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:-1;"&gt;&lt;span class="a"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="www.roseindia.net/struts/struts2/"&gt;&lt;span style="font-size:-1;"&gt;&lt;span class="a"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-8307668046609686236?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/lW24WbRFivs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/lW24WbRFivs/help-on-struts-2.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/help-on-struts-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-683042371419378147</guid><pubDate>Wed, 17 Oct 2007 12:43:00 +0000</pubDate><atom:updated>2010-05-08T13:22:14.600+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">demo</category><category domain="http://www.blogger.com/atom/ns#">struts 2 plugin</category><title>Getting started with Struts 2 and Tiles 2</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c5p5V3yHFeYpSylTGTyysFmL1po/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c5p5V3yHFeYpSylTGTyysFmL1po/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/c5p5V3yHFeYpSylTGTyysFmL1po/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c5p5V3yHFeYpSylTGTyysFmL1po/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi guys,&lt;br /&gt;
&lt;br /&gt;
I have developed the demo application which shows how the struts 2 and tiles 2 works together.&lt;br /&gt;
&lt;span class="down" id="formatbar_CreateLink" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 10);ButtonMouseDown(this);" onmouseout="ButtonHoverOff(this);" onmouseover="ButtonHoverOn(this);" onmouseup="" style="display: block;" title="Link"&gt;&lt;/span&gt;&lt;br /&gt;
You can download it by clicking here :&amp;nbsp;&amp;nbsp;&lt;a href="http://www.ziddu.com/download/9774973/struts2-tiles.tar.gz.html" rel="nofollow"&gt;struts2-tiles.zip&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&amp;nbsp;&lt;a href="http://groups.google.com/group/struts-2/web/struts2-tiles.zip" rel="nofollow"&gt;struts2-tiles.zip&lt;/a&gt;&lt;br /&gt;
&lt;span class="" id="formatbar_CreateLink" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 10);ButtonMouseDown(this);" onmouseout="ButtonHoverOff(this);" onmouseover="ButtonHoverOn(this);" onmouseup="" style="display: block;" title="Link"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-683042371419378147?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/uLSJSWtbHk4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/uLSJSWtbHk4/getting-started-with-struts-2-and-tiles.html</link><author>noreply@blogger.com (sandy)</author><thr:total>12</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/getting-started-with-struts-2-and-tiles.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-307965973444443468</guid><pubDate>Wed, 10 Oct 2007 04:59:00 +0000</pubDate><atom:updated>2007-10-22T14:31:15.539+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 framework</category><title>Comparing Struts 1 and 2</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8dYebWdwRejTHHqkXK9-eSRjlAc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8dYebWdwRejTHHqkXK9-eSRjlAc/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/8dYebWdwRejTHHqkXK9-eSRjlAc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8dYebWdwRejTHHqkXK9-eSRjlAc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Struts 1 Vs Struts 2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;table class="confluenceTable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class="confluenceTh"&gt; Feature &lt;/th&gt; &lt;th class="confluenceTh"&gt; Struts 1 &lt;/th&gt; &lt;th class="confluenceTh"&gt; Struts 2 &lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Action classes &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 requires Action classes to extend an abstract base class. A common problem in Struts 1 is programming to abstract classes instead of interfaces. &lt;/td&gt; &lt;td class="confluenceTd"&gt; An Struts 2 Action &lt;em&gt;may&lt;/em&gt; implement an &lt;tt&gt;Action&lt;/tt&gt; interface, along with other interfaces to enable optional and custom services. Struts 2 provides a base ActionSupport class to implement commonly used interfaces. Albeit, the Action interface is &lt;b&gt;not&lt;/b&gt; required. Any POJO object with a &lt;tt&gt;execute&lt;/tt&gt; signature can be used as an Struts 2 Action object. &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Threading Model &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 Actions are singletons and must be thread-safe since there will 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 Struts 1 Actions and requires extra care to develop. Action resources must be thread-safe or synchronized. &lt;/td&gt; &lt;td class="confluenceTd"&gt; 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;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Servlet Dependency &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 Actions have dependencies on the servlet API since the HttpServletRequest and HttpServletResponse is passed to the &lt;tt&gt;execute&lt;/tt&gt; method when an Action is invoked. &lt;/td&gt; &lt;td class="confluenceTd"&gt; Struts 2 Actions are not coupled to a container. Most often the servlet contexts are represented as simple Maps, allowing Actions to be tested in isolation. Struts 2 Actions can still 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;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Testability &lt;/th&gt; &lt;td class="confluenceTd"&gt; A major hurdle to testing Struts 1 Actions is that the &lt;tt&gt;execute&lt;/tt&gt; method exposes the Servlet API. A third-party extension, Struts TestCase, offers a set of mock object for Struts 1. &lt;/td&gt; &lt;td class="confluenceTd"&gt; Struts 2 Actions can be tested by instantiating the Action, setting properties, and invoking methods. Dependency Injection support also makes testing simpler. &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Harvesting Input &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 uses an ActionForm object to capture input. Like Actions, all ActionForms must extend a base class. Since  other JavaBeans cannot be used as ActionForms, developers often create redundant classes to capture input. DynaBeans can used as an alternative to creating conventional ActionForm classes, but, here too, developers may be redescribing existing JavaBeans.&lt;br /&gt;&lt;/td&gt; &lt;td class="confluenceTd"&gt; Struts 2 uses Action properties as input properties, eliminating the need for a second input object. Input properties may be rich object types which may have their own properties. The 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. Rich object types, including business or domain objects, can be used as input/output objects. The ModelDriven feature simplifies taglb references to POJO input objects.&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Expression Language &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 integrates with JSTL, so it uses the JSTL EL. The EL has basic object graph traversal, but relatively weak collection and indexed property support. &lt;/td&gt; &lt;td class="confluenceTd"&gt; Struts 2 can use JSTL, but the framework also supports a more powerful and flexible expression language called "Object Graph Notation Language" (OGNL). &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Binding values into views &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 uses the standard JSP mechanism for binding objects into the page context for access. &lt;/td&gt; &lt;td class="confluenceTd"&gt; 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 reuse of views across a range of types which may have the same property name but different property types.&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Type Conversion &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 ActionForm properties are usually all Strings. Struts 1 uses Commons-Beanutils for type conversion. Converters are per-class, and not configurable per instance. &lt;/td&gt; &lt;td class="confluenceTd"&gt; Struts 2 uses OGNL for type conversion. The framework includes converters for basic and common object types and primitives. &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Validation &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 supports manual validation via a &lt;tt&gt;validate&lt;/tt&gt; method on the ActionForm, or through an extension to the Commons Validator. Classes can have different validation contexts for the same class, but cannot chain to validations on sub-objects. &lt;/td&gt; &lt;td class="confluenceTd"&gt; Struts 2 supports manual validation via the &lt;tt&gt;validate&lt;/tt&gt; 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;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th class="confluenceTh"&gt; Control Of Action Execution &lt;/th&gt; &lt;td class="confluenceTd"&gt; Struts 1 supports separate Request Processors (lifecycles) for each module, but all the Actions in the module must share the same lifecycle. &lt;/td&gt; &lt;td class="confluenceTd"&gt; 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;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-307965973444443468?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/IyRlDqoCkbQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/IyRlDqoCkbQ/comparing-struts-1-and-2.html</link><author>noreply@blogger.com (sandy)</author><thr:total>1</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/comparing-struts-1-and-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-3324769606761259824</guid><pubDate>Wed, 10 Oct 2007 04:50:00 +0000</pubDate><atom:updated>2007-10-22T14:31:20.978+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 framework</category><title>Why Struts 2</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AekK0iqmS-Lk4NPHO3kcTbX47Kk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AekK0iqmS-Lk4NPHO3kcTbX47Kk/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/AekK0iqmS-Lk4NPHO3kcTbX47Kk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AekK0iqmS-Lk4NPHO3kcTbX47Kk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The new version Struts 2 is a combination of the Sturts action framework and Webwork.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Simplified Design&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    Programming the abstract classes instead of interfaces is one of design problem of struts1 framework that has been resolved in the struts 2 framework. Most of the Struts 2 classes are based on interfaces and most of its core interfaces are HTTP independent. Struts 2 Action classes are framework independent and are simplified to look as simple POJOs. Framework components are tried to keep loosely coupled. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Simplified Actions&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Actions are simple POJOs. Any java class with execute() method can be used as an Action class. Even we don't need to implement interfaces always. Inversion of Control is introduced while developing the action classes. This make the actions to be neutral to the underlying framework .&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;No more ActionForms&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;     ActionForms feature is no more known to the struts2 framework. Simple JavaBean flavored actions are used to put properties directly . No need to use all String properties. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Simplified testability&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Struts 2 Actions are HTTP independent and framework neutral. This enables to test struts applications very easily without resorting to mock objects.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Intelligent Defaults&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Most configuration elements have a default value which can be set according to the need. Even there are xml-based default configuration files that can be overridden according to the need.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Improved  results&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Unlike ActionForwards, Struts 2 Results provides flexibility to create multiple type of outputs and in actual it helps to prepare the response.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Better Tag features&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Struts 2 tags enables to add style sheet-driven markup capabilities, so that we can create consistent pages with less code. Struts 2 tags are more capable and result oriented. Struts 2 tag markup can be altered by changing an underlying stylesheet. Individual tag markup can be changed by editing a FreeMarker template. Both JSP and FreeMarker tags are fully supported.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Annotations introduced&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;     Applications in struts 2 can use use Java 5 annotations as an alternative to XML and Java properties configuration. Annotations minimizes the use of xml.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Stateful Checkboxes&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Struts 2 checkboxes do not require special handling for false values.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;QuickStart&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Many changes can be made on the fly without restarting a web container.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;customizing controller&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    Struts 1 lets to customize the request processor per module, Struts 2 lets to customize the request handling per action, if desired.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Easy Spring integration&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;    Struts 2 Actions are Spring-aware. Just needs to add Spring beans!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Easy plugins&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    Struts 2 extensions can be added by dropping in a JAR. No manual configuration required!&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;AJAX support&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;    The AJAX theme gives interactive applications a significant boost.&lt;br /&gt;The framework provides a set of tags to help you ajaxify your applications, even on Dojo. The AJAX features include:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;AJAX Client Side Validation &lt;/li&gt;&lt;li&gt;Remote form submission support (works with the submit tag as well) &lt;/li&gt;&lt;li&gt;An advanced div template that provides dynamic reloading of partial HTML &lt;/li&gt;&lt;li&gt;An advanced a template that provides the ability to load and evaluate JavaScript remotely &lt;/li&gt;&lt;li&gt;An AJAX-only tabbed Panel implementation &lt;/li&gt;&lt;li&gt;A rich pub-sub event model &lt;/li&gt;&lt;li&gt;Interactive auto complete tag&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-3324769606761259824?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/eAMpsLknpTo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/eAMpsLknpTo/why-struts-2.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/why-struts-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-7055906397600432381</guid><pubDate>Wed, 10 Oct 2007 04:48:00 +0000</pubDate><atom:updated>2007-10-22T14:31:25.815+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 framework</category><title>What's new in Struts 2.0?</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yilgyYwhoFDbUefyI_1VSLeHUKc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yilgyYwhoFDbUefyI_1VSLeHUKc/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/yilgyYwhoFDbUefyI_1VSLeHUKc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yilgyYwhoFDbUefyI_1VSLeHUKc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    In this article we will talk about the new features in Struts 2.0. Over the years, every developers believes that struts is the best and simple framework to implement. Since last two years, more new frameworks come to the market and the use of Struts is declined. Lack of updation in the Struts framework is the main reason for developers choosing alternative framework. To answer this, Struts team comes with the Struts 2.0, an integration of Struts 1.0 with Webwork. Here we will look into the prominent features in the new framework.&lt;/p&gt;&lt;p&gt;    An Struts 2 Action may implement an Action interface, along with other interfaces to enable optional and custom services. Struts 2 provides a base ActionSupport class to implement commonly used interfaces. Albeit, the Action interface is not required. Any POJO object with a execute signature can be used as an Struts 2 Action object. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Threading Model&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;    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;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Testability&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;    Struts 2 Actions can be tested by instantiating the Action, setting properties, and invoking methods. Dependency Injection support also makes testing simpler.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Servlet Dependency&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    Struts 2 Actions are not coupled to a container. Most often the servlet contexts are represented as simple Maps, allowing Actions to be tested in isolation. Struts 2 Actions can still 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;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Harvesting Input&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    Struts 2 uses Action properties as input properties, eliminating the need for a second input object. Input properties may be rich object types which may have their own properties. The Action properties can 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. Rich object types, including business or domain objects, can be used as input/output objects. The ModelDriven feature simplifies taglb references to POJO input objects.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Expression Language&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    Struts 2 can use JSTL, but the framework also supports a more powerful and flexible expression language called "Object Graph Notation Language" (OGNL). &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Binding values into views&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    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 reuse of views across a range of types which may have the same property name but different property types.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Type Conversion&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    Struts 2 uses OGNL for type conversion. The framework includes converters for basic and common object types and primitives.&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Validation&lt;/b&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;    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;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Control Of Action Execution&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    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;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-7055906397600432381?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/fgWrE9uNeJ8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/fgWrE9uNeJ8/whats-new-in-struts-20.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/whats-new-in-struts-20.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-245152603288813985</guid><pubDate>Tue, 09 Oct 2007 12:24:00 +0000</pubDate><atom:updated>2007-10-22T14:32:02.290+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">other</category><title>Struts 2 links</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MidJqNK8icy2XL_CeS6060RnUhQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MidJqNK8icy2XL_CeS6060RnUhQ/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/MidJqNK8icy2XL_CeS6060RnUhQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MidJqNK8icy2XL_CeS6060RnUhQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Discussion on different kind of topic of struts2 2&lt;br /&gt;&lt;a href="http://groups.google.com/group/struts-2"&gt;http://groups.google.com/group/struts-2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-245152603288813985?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/PnP8rzHuFRA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/PnP8rzHuFRA/links.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/links.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-7426794313126239843</guid><pubDate>Tue, 09 Oct 2007 09:57:00 +0000</pubDate><atom:updated>2007-10-22T14:32:02.290+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">other</category><title>using ${ , # and %{}</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b2Nfc2drBawLScsUMW2l_JScbVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b2Nfc2drBawLScsUMW2l_JScbVY/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/b2Nfc2drBawLScsUMW2l_JScbVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b2Nfc2drBawLScsUMW2l_JScbVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;${} is for writing JSP EL, while %{} is for writing OGNL.&lt;br /&gt;Both serve similar purposes, and if you have a servlet container that supports&lt;br /&gt;JSP EL and are running Struts 2, they can be used almost&lt;br /&gt;interchangeably. And # is used for map/lists.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;For more details you can read up on the JSP EL:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html"&gt;http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;and using OGNL with Struts 2:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://struts.apache.org/2.0.9/docs/ognl.html"&gt;http://struts.apache.org/2.0.9/docs/ognl.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://struts.apache.org/2.0.9/docs/tag-syntax.html"&gt;http://struts.apache.org/2.0.9/docs/tag-syntax.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-7426794313126239843?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/MM7qvq7czSk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/MM7qvq7czSk/using-and.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/using-and.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-3706351473539903577</guid><pubDate>Sat, 06 Oct 2007 09:53:00 +0000</pubDate><atom:updated>2007-10-08T15:00:23.946+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 plugin</category><title>Struts2 Plugin</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jtw0yTstYi77m-Kz5bwVv1KyAPM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jtw0yTstYi77m-Kz5bwVv1KyAPM/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/jtw0yTstYi77m-Kz5bwVv1KyAPM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jtw0yTstYi77m-Kz5bwVv1KyAPM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://cwiki.apache.org/WW/home.html" title="Home"&gt;Apache Struts 2&lt;/a&gt; provides a simple &lt;a href="http://cwiki.apache.org/WW/plugins.html" title="Plugins"&gt;plugin architecture&lt;/a&gt; so that develpers can extend the framework just by adding a JAR to the application's classpath (in addition to whatever JARs may be required to fulfill the dependencies of the plugin itself). Since plugins are contained in a JAR, they are easy to share with others. Here, we list plugins available for Struts 2 and provides help on how to use them.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/codebehind-plugin.html" title="Codebehind Plugin"&gt;Codebehind Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;reduces mundane configuration by adding "Page Controller" conventions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/config-browser-plugin.html" title="Config Browser Plugin"&gt;Config Browser Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;a simple tool to help view your Struts configuration at runtime&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/connext-graph-plugin.html" title="Connext Graph Plugin"&gt;Connext Graph Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows web applications to make use of the Open Flash Chart charts.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/extratags-plugin.html" title="ExtraTags Plugin"&gt;ExtraTags Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;provides a set of additional tags that complement the core UI tags&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/groovy-standalone-plugin.html" title="Groovy Standalone Plugin"&gt;Groovy Standalone Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;provides support for Actions (and Interceptors) written in the Groovy language&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/gwt-plugin.html" title="GWT Plugin"&gt;GWT Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;can be used to call methods on Struts actions using Google Web Toolkit (GWT)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/hdiv-plugin.html" title="HDIV Plugin"&gt;HDIV Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;integrates &lt;span class="nobr"&gt;&lt;a href="http://www.hdiv.org/" title="Visit page outside Confluence" rel="nofollow"&gt;HDIV (HTTP Data Integrity Validator)&lt;sup&gt;&lt;img class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; with Struts 2 adding Security functionalities&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/image-plugin.html" title="Image Plugin"&gt;Image Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;collection of various plugins for image handling (thumbnails, remote storage, validator)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/jasperreports-plugin.html" title="JasperReports Plugin"&gt;JasperReports Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;enables Actions to return reports through JasperReports&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/jfreechart-plugin.html" title="JFreeChart Plugin"&gt;JFreeChart Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows Actions to easily return generated charts and graphs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/jscalendar-plugin.html" title="JSCalendar Plugin"&gt;JSCalendar Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;a backport of the Webwork 2.2.6 &lt;span class="nobr"&gt;&lt;a href="http://dynarch.com/mishoo/calendar.epl" title="Visit page outside Confluence" rel="nofollow"&gt;JSCalendar&lt;sup&gt;&lt;img class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; tag&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/jsf-plugin.html" title="JSF Plugin"&gt;JSF Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;provides support for JavaServer Faces components with no additional configuration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/json-plugin.html" title="JSON Plugin"&gt;JSON Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;provides a "json" result type that serializes actions into JSON&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/lightboxjs-plugin.html" title="LightBoxJS Plugin"&gt;LightBoxJS Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;makes it easier to use the popular &lt;span class="nobr"&gt;&lt;a href="http://www.huddletogether.com/projects/lightbox2/" title="Visit page outside Confluence" rel="nofollow"&gt;LightBoxJS&lt;sup&gt;&lt;img class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; script&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/osgi-plugin.html" title="OSGi Plugin"&gt;OSGi Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;leverages OSGi to allow Struts 2 applications to be divided into multiple jars (bundles) and managed at runtime&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/pell-multipart-plugin.html" title="Pell Multipart Plugin"&gt;Pell Multipart Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;instructs Struts to use &lt;span class="nobr"&gt;&lt;a href="http://freshmeat.net/projects/multipartrequest" title="Visit page outside Confluence" rel="nofollow"&gt;Jason Pell's multipart parser&lt;sup&gt;&lt;img class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; to process file uploads&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/plexus-plugin.html" title="Plexus Plugin"&gt;Plexus Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;enables Struts Actions, Interceptors, and Results to be created and injected by &lt;span class="nobr"&gt;&lt;a href="http://plexus.codehaus.org/" title="Visit page outside Confluence" rel="nofollow"&gt;Plexus&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/rome-rss-atom-plugin.html" title="Rome RSS-Atom Plugin"&gt;Rome RSS-Atom Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows easy outputting of Rome SyndFeed objects (RSS, Atom)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/scope-plugin.html" title="Scope plugin"&gt;Scope plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;implements JBoss Seam-style scoped bijection&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/sitegraph-plugin.html" title="SiteGraph Plugin"&gt;SiteGraph Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;generates graphical diagrams representing the flow of your web application&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/sitemesh-plugin.html" title="Sitemesh Plugin"&gt;Sitemesh Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows Sitemesh templates to access Struts information&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/smarturls-plugin.html" title="SmartURLs plugin"&gt;SmartURLs plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;a code by convention and component plugin similar to the Codebehind and Zero-config plugins&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/spring-mvc-plugin.html" title="Spring MVC Plugin"&gt;Spring MVC Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows Spring MVC controllers and interceptors to be executed in Struts 2&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/spring-plugin.html" title="Spring Plugin"&gt;Spring Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows Actions, Interceptors, and Results to be created and/or autowired by Spring&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/spring-webflow-plugin.html" title="Spring Webflow Plugin"&gt;Spring Webflow Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;integrates &lt;span class="nobr"&gt;&lt;a href="http://www.springframework.org/webflow" title="Visit page outside Confluence" rel="nofollow"&gt;Spring Webflow&lt;sup&gt;&lt;img class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; (SWF) with Struts 2&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/struts-1-plugin.html" title="Struts 1 Plugin"&gt;Struts 1 Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows you to use existing Struts 1 Actions and ActionForms in Struts 2 applications&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/table-tags.html" title="Table Tags"&gt;Table Tags&lt;/a&gt; — &lt;span class="smalltext"&gt;Struts 2 tags for displaying table data&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/tiles-plugin.html" title="Tiles Plugin"&gt;Tiles Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;allows actions to return Tiles pages&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/webwork2-plugin.html" title="WebWork2 Plugin"&gt;WebWork2 Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;aims to be a drop-in replacement for WebWork 2 in a web application&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cwiki.apache.org/S2PLUGINS/yui-plugin.html" title="YUI Plugin"&gt;YUI Plugin&lt;/a&gt; — &lt;span class="smalltext"&gt;provides tags based on YUI&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-3706351473539903577?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/-za20DEnSS4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/-za20DEnSS4/struts2-plugin.html</link><author>noreply@blogger.com (sandy)</author><thr:total>1</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/struts2-plugin.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-6149756125993272093</guid><pubDate>Sat, 06 Oct 2007 05:53:00 +0000</pubDate><atom:updated>2007-10-06T11:50:57.179+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 validation</category><title>Struts 2: Validation</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vVE7TjVfMWdKSE7GRLtCFpk9Fuo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vVE7TjVfMWdKSE7GRLtCFpk9Fuo/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/vVE7TjVfMWdKSE7GRLtCFpk9Fuo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vVE7TjVfMWdKSE7GRLtCFpk9Fuo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://struts.apache.org/2.x/index.html"&gt;Struts 2.0&lt;/a&gt; relies on a validation framework provided by &lt;a href="http://www.opensymphony.com/xwork/"&gt;XWork&lt;/a&gt; input validation. Along with  basic validation and &lt;span style="font-weight: bold;"&gt;client-side Javascript&lt;/span&gt; validation offered in Struts 1.x, Struts 2 offers &lt;span style="font-weight: bold;"&gt;Ajax based validation&lt;/span&gt;. The following example demonstrates how to use Struts 2 validation, both basic and ajax validations. For this, the sample page used is shown below.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;s:form action="RegisterUser"&amp;gt;&lt;br /&gt;&amp;lt;s:textfield name="userName" size="20" label="User Name"  /&amp;gt;&lt;br /&gt;&amp;lt;s:textfield name="emailAddress" size="20" label="Email Address" /&amp;gt;&lt;br /&gt;&amp;lt;s:textfield name="dateOfBirth" size="20" label="Date Of Birth" /&amp;gt;&lt;br /&gt;&amp;lt;s:submit name="submit" value="submit" /&amp;gt;&lt;br /&gt;&amp;lt;/s:form&amp;gt;&lt;/pre&gt; The Action definition is shown below:&lt;pre&gt;&amp;lt;action name="RegisterUser" method="registerUser" class="example.RegisterUser"&amp;gt;&lt;br /&gt;&amp;lt;result name="input"&amp;gt;/example/Register.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;lt;result&amp;gt;/example/HelloWorld.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;lt;/action&amp;gt;&lt;/pre&gt;Based on above definition, the Action class must have a method name registerUser.&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 130%;"&gt;Basic Validation&lt;/span&gt;&lt;br /&gt;For basic validaton, you have to define the validation rules in &lt;span style="font-style: italic;"&gt;&lt;actionclassname&gt;&lt;/actionclassname&gt;&lt;/span&gt;&amp;amp;ltActionClassName&gt;-validation.xml file. The validations for this form are defined in the &lt;span style="font-style: italic;"&gt;RegisterUser-validation.xml&lt;/span&gt; file as follows&lt;pre&gt;&amp;lt;validators&amp;gt;&lt;br /&gt;&amp;lt;field name="userName"&amp;gt;&lt;br /&gt;&amp;lt;field-validator type="requiredstring"&amp;gt;&lt;br /&gt; &amp;lt;message key="requiredstring" /&amp;gt;&lt;br /&gt;&amp;lt;/field-validator&amp;gt;&lt;br /&gt;&amp;lt;/field&amp;gt;&lt;br /&gt;&amp;lt;field name="emailAddress"&amp;gt;&lt;br /&gt;&amp;lt;field-validator type="email"&amp;gt;&lt;br /&gt; &amp;lt;message key="fieldFormat" /&amp;gt;&lt;br /&gt;&amp;lt;/field-validator&amp;gt;&lt;br /&gt;&amp;lt;/field&amp;gt;&lt;br /&gt;&amp;lt;field name="dateOfBirth"&amp;gt;&lt;br /&gt;&amp;lt;field-validator type="requiredstring"&amp;gt;&lt;br /&gt; &amp;lt;message key="requiredstring" /&amp;gt;&lt;br /&gt;&amp;lt;/field-validator&amp;gt;&lt;br /&gt;&amp;lt;field-validator type="regex"&amp;gt;&lt;br /&gt; &amp;lt;param name="expression"&amp;gt;&lt;br /&gt;  [0-9][0-9]/[0-9][0-9]/[1-9][0-9][0-9][0-9]&lt;br /&gt; &amp;lt;/param&amp;gt;&lt;br /&gt; &amp;lt;message key="fieldFormat" /&amp;gt;&lt;br /&gt;&amp;lt;/field-validator&amp;gt;&lt;br /&gt;&amp;lt;/field&amp;gt;&lt;br /&gt;&amp;lt;/validators&amp;gt;&lt;/pre&gt;Note that the "date of birth" field has two validators associated with it. The "regex" validator type takes a parameter by the name "&lt;span style="font-weight: bold;"&gt;expression&lt;/span&gt;" which is the regular expression used to validate the field. The message keys used in validation rules must be defined in "&lt;span style="font-style: italic;"&gt;package.properties&lt;/span&gt;" file as follows:&lt;pre&gt;requiredstring = ${getText(fieldName)} is required.&lt;br /&gt;fieldFormat = ${getText(fieldName)} is not formatted properly.&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 130%;"&gt;Client Side Validation&lt;/span&gt;&lt;br /&gt;For simple client-side validation without Ajax, just add a validate="true" to the form definition in the JSP, as follows:&lt;pre&gt;&amp;lt;s:form action="RegisterUser" validate="true"&amp;gt;&lt;/pre&gt; Also note that the message keys do not work(atleast not for me), and you may have to define the error messages directly instead of through the properties file as follows:&lt;pre&gt;&amp;lt;message&amp;gt;Date of birth is not formatted properly&amp;lt;/message&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 130%;"&gt;Ajax Validation&lt;/span&gt;&lt;br /&gt;Struts implements Ajax Validation by using &lt;a style="font-weight: bold;" href="http://getahead.ltd.uk/dwr/"&gt;DWR&lt;/a&gt;. For a quick start of DWR read &lt;a href="http://java-x.blogspot.com/2006/10/ajax-in-java-with-dwr.html"&gt;Ajax in Java with DWR&lt;/a&gt;. Coming to Struts validation, follow these steps to setup DWR&lt;ol&gt;&lt;li&gt;Download DWR from &lt;a href="http://getahead.ltd.uk/dwr/download"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Add DWR servlet mapping in the web deployment descriptor as shown below&lt;pre&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;dwr&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;uk.ltd.getahead.dwr.DWRServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt; &amp;lt;param-name&amp;gt;debug&amp;lt;/param-name&amp;gt;&lt;br /&gt; &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;dwr&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/dwr/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;In your WEB-INF directory, create a &lt;span style="font-style: italic;"&gt;dwr.xml&lt;/span&gt; file and declare the struts validator as follows&lt;pre&gt;&amp;lt;!DOCTYPE dwr PUBLIC&lt;br /&gt;"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"&lt;br /&gt;"http://www.getahead.ltd.uk/dwr/dwr10.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;dwr&amp;gt;&lt;br /&gt;&amp;lt;allow&amp;gt;&lt;br /&gt;&amp;lt;create creator="new" javascript="validator"&amp;gt;&lt;br /&gt; &amp;lt;param name="class"&lt;br /&gt;  value="org.apache.struts2.validators.DWRValidator" /&amp;gt;&lt;br /&gt;&amp;lt;/create&amp;gt;&lt;br /&gt;&amp;lt;convert converter="bean"&lt;br /&gt; match="com.opensymphony.xwork2.ValidationAwareSupport" /&amp;gt;&lt;br /&gt;&amp;lt;/allow&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;signatures&amp;gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;import java.util.Map;&lt;br /&gt;import org.apache.struts2.validators.DWRValidator;&lt;br /&gt;&lt;br /&gt;DWRValidator.doPost(String, String, Map&amp;lt;String, String&amp;gt;);&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/signatures&amp;gt;&lt;br /&gt;&amp;lt;/dwr&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Change the form declaration in your JSP file to include "&lt;span style="font-weight: bold;"&gt;theme=ajax&lt;/span&gt;" as shown below&lt;pre&gt;&amp;lt;s:form action="RegisterUser" validate="true" theme="ajax"&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-6149756125993272093?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/d8cIHXJHcrM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/d8cIHXJHcrM/struts-2-validation.html</link><author>noreply@blogger.com (sandy)</author><thr:total>1</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/10/struts-2-validation.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9014076727113754138.post-4376449593751659443</guid><pubDate>Mon, 05 Mar 2007 13:15:00 +0000</pubDate><atom:updated>2007-10-01T17:20:57.155+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">struts 2 framework</category><title>Struts 2 Framework</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n8xF3l-J6xXkhpxM--Nol58ZsWo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8xF3l-J6xXkhpxM--Nol58ZsWo/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/n8xF3l-J6xXkhpxM--Nol58ZsWo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n8xF3l-J6xXkhpxM--Nol58ZsWo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://struts.apache.org/" target="_blank"&gt;Apache Struts&lt;/a&gt; is a &lt;strong&gt;free open-source framework&lt;/strong&gt; for creating &lt;strong&gt;Java web applications.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Web applications differ from conventional websites in that web applications can create a dynamic response. Many websites deliver only static pages. A web application can interact with databases and business logic engines to customize a response.&lt;/p&gt;&lt;p&gt;Web applications based on JavaServer Pages sometimes commingle database code, page design code, and control flow code. In practice, we find that unless these concerns are separated, larger applications become difficult to maintain.&lt;/p&gt;&lt;p&gt;One way to separate concerns in a software application is to use a &lt;strong&gt;Model-View-Controller&lt;/strong&gt; (MVC) architecture. The Model represents the business or database code, the View represents the page design code, and the Controller represents the navigational code. The Struts framework is designed to help developers create web applications that utilize a MVC architecture.&lt;/p&gt;&lt;p&gt;&lt;img title="Struts 2 / Webwork architecture" style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; WIDTH: 345px; BORDER-BOTTOM: black 1px solid; HEIGHT: 192px" src="http://www.dedigitalespeeltuin.nl/strutsframework/images/webwork-struts2.jpg" /&gt;&lt;small&gt;&lt;br /&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;(Struts 2 / WebWork architecture)&lt;/small&gt;&lt;/p&gt;&lt;p&gt;The framework provides three key components: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A "request" handler provided by the application developer that is mapped to a standard URI.&lt;/li&gt;&lt;li&gt;A "response" handler that transfers control to another resource which completes the response.&lt;/li&gt;&lt;li&gt;A tag library that helps developers create interactive form-based applications with server pages.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The framework's architecture and tags are buzzword compliant. Struts works well with conventional REST applications and with new technologies like SOAP and AJAX.&lt;/p&gt;&lt;p&gt;The Apache Struts Project offers two major versions of the Struts framework. &lt;strong&gt;Struts 1&lt;/strong&gt; is recognized as the &lt;strong&gt;most popular web application framework for Java&lt;/strong&gt;. The 1.x framework is mature, well-documented, and widely supported. Struts 1 is the best choice for teams who value proven solutions to common problems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Struts 2&lt;/strong&gt; was originally known as &lt;a href="http://www.opensymphony.com/webwork" target="_blank"&gt;WebWork 2&lt;/a&gt;. After working independently for several years, the WebWork and Struts communities joined forces to create Struts 2. The new framework is the best choice for teams who value elegant solutions to difficult problems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Struts 2&lt;/strong&gt; is still under construction. An initial release is expected in the third quarter of 2006.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9014076727113754138-4376449593751659443?l=struts-2.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/struts-2/~4/ZRwRbjaCSWs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/struts-2/~3/ZRwRbjaCSWs/struts-2.html</link><author>noreply@blogger.com (sandy)</author><thr:total>0</thr:total><feedburner:origLink>http://struts-2.blogspot.com/2007/03/struts-2.html</feedburner:origLink></item></channel></rss>

