<?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:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Zigron Inc. Blog</title>
	
	<link>http://www.zigron.com/blog</link>
	<description />
	<pubDate>Wed, 24 Jun 2009 00:41:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ZigronInc" type="application/rss+xml" /><item>
		<title>Zigron launches its new website</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/WU-U0Wr1G1g/</link>
		<comments>http://www.zigron.com/blog/2009/06/23/zigron-launches-its-new-website/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 15:29:47 +0000</pubDate>
		<dc:creator>Haris Khan</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Zigron Inc]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=232</guid>
		<description><![CDATA[Zigron has grown tremendously over the last two years and during this time we have tried our level best to keep our website up-to-date. Keeping the iterative approach in combination with &#8220;market driven design&#8221; philosophy,we are now launching Zigron&#8217;s new website and brand identity.
Zigron has used its successful approach of &#8220;Simple , Beautiful and Usable&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Zigron has grown tremendously over the last two years and during this time we have tried our level best to keep our website up-to-date. Keeping the iterative approach in combination with &#8220;market driven design&#8221; philosophy,we are now launching Zigron&#8217;s new website and brand identity.</p>
<p>Zigron has used its successful approach of &#8220;Simple , Beautiful and Usable&#8221; methodology to design and develop our new website which will cater to a wider range of our ever growing client base and industry verticals.</p>
<p>I will truly appreciate your feedback or suggestions for our new site.</p>
<p style="text-align: center;"> </p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/WU-U0Wr1G1g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2009/06/23/zigron-launches-its-new-website/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2009/06/23/zigron-launches-its-new-website/</feedburner:origLink></item>
		<item>
		<title>Google’s Data Center Tour Video</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/ac9QiSSNn_Q/</link>
		<comments>http://www.zigron.com/blog/2009/04/07/googles-data-center-tour-video/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 23:33:31 +0000</pubDate>
		<dc:creator>Haris Khan</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=214</guid>
		<description><![CDATA[Enjoy the video of Google&#8217;s Data Center tour.
]]></description>
			<content:encoded><![CDATA[<p>Enjoy the video of Google&#8217;s Data Center tour.</p>
<p style="text-align: center;"><object width="425" height="344" data="http://www.youtube.com/v/zRwPSFpLX8I&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/zRwPSFpLX8I&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/ac9QiSSNn_Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2009/04/07/googles-data-center-tour-video/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2009/04/07/googles-data-center-tour-video/</feedburner:origLink></item>
		<item>
		<title>Zigron at NVTC’s Emerging Business and Entrepreneur Event</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/MKfqVPiaGIU/</link>
		<comments>http://www.zigron.com/blog/2009/03/18/zigron-at-nvtcs-emerging-business-and-entrepreneur-event/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 19:21:40 +0000</pubDate>
		<dc:creator>Haris Khan</dc:creator>
		
		<category><![CDATA[Zigron Inc]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=200</guid>
		<description><![CDATA[
On March 17th 2009 Zigron Inc exhibited its services and products at Norther Virginia Technology Council&#8217;s Emerging Business and Entrepreneur Event.
The Northern Virginia Technology Council (NVTC) is the membership association for the technology community in Northern Virginia. NVTC has about 1100 member companies representing more than 200,000 employees and Zigron is its memeber.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="size-full wp-image-202 alignnone" title="photo" src="http://www.zigron.com/blog/wp-content/uploads/2009/03/photo.jpg" alt="photo" width="675" height="506" /></p>
<p style="text-align: left;">On March 17th 2009 Zigron Inc exhibited its services and products at <a href="http://http://www.nvtc.org/index.php" target="_blank">Norther Virginia Technology Council&#8217;s</a> <a href="http://www.nvtc.org/events/getarchive.php?event=EBE-19" target="_blank">Emerging Business and Entrepreneur Event</a>.</p>
<p style="text-align: left;">The Northern Virginia Technology Council (NVTC) is the membership association for the technology community in Northern Virginia. <acronym title="Northern Virginia Technology Council">NVTC</acronym> has about 1100 member companies representing more than 200,000 employees and Zigron is its memeber.</p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/MKfqVPiaGIU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2009/03/18/zigron-at-nvtcs-emerging-business-and-entrepreneur-event/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2009/03/18/zigron-at-nvtcs-emerging-business-and-entrepreneur-event/</feedburner:origLink></item>
		<item>
		<title>DareMyCompany At Mashable.com</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/MCtXe2jFEbI/</link>
		<comments>http://www.zigron.com/blog/2009/01/01/daremycompany-at-mashablecom/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 10:10:48 +0000</pubDate>
		<dc:creator>Qurratulain Akhtar</dc:creator>
		
		<category><![CDATA[Zigron Inc]]></category>

		<category><![CDATA[DareMyCompany]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=193</guid>
		<description><![CDATA[&#8220;I absolutely love the idea of DareMyCompany&#8221;, says Jennifer Van Grove here on Mashable. She wrote a detailed review of the web app Zigron lately developed after the success of PingMyCompany.
DareMyCompany is a simple tool that lets companies find other companies for different sports and other challenges/competitions. It&#8217;s one of it&#8217;s kind and has been [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;I absolutely love the idea of DareMyCompany&#8221;, says Jennifer Van Grove <a href="http://mashable.com/2008/12/31/daremycompany/">here on Mashable</a>. She wrote a detailed review of the web app Zigron lately developed after the success of <a href="http://www.pingmycompany.com">PingMyCompany</a>.</p>
<p><img class="alignleft" src="http://www.zigron.com/blog/wp-content/uploads/2008/11/dmc_02.gif" alt="" width="139" height="186" /><a href="http://daremycompany.com">DareMyCompany</a> is a simple tool that lets companies find other companies for different sports and other challenges/competitions. It&#8217;s one of it&#8217;s kind and has been developed by keeping in mind the importance of entertainment for working people.</p>
<p>Currently the challenges on the site fall under sports category only, but the criteria will be expanded with a lot more locations, and some new features laters.</p>
<p>If you&#8217;re also tired of working and or want to show other companies in your area that you&#8217;re best at something, just give them a call at DareMyCopmany and prove yourself!</p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/MCtXe2jFEbI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2009/01/01/daremycompany-at-mashablecom/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2009/01/01/daremycompany-at-mashablecom/</feedburner:origLink></item>
		<item>
		<title>Zigron Bar-B-Que Event</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/LdJp8aL7h-o/</link>
		<comments>http://www.zigron.com/blog/2008/12/26/zigron-bar-b-que-event/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 08:59:19 +0000</pubDate>
		<dc:creator>Qurratulain Akhtar</dc:creator>
		
		<category><![CDATA[Zigron Inc]]></category>

		<category><![CDATA[Islamabad]]></category>

		<category><![CDATA[Karachi]]></category>

		<category><![CDATA[Pakistan]]></category>

		<category><![CDATA[Rawal Lake]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=184</guid>
		<description><![CDATA[This is the best time to visit Pakistan for tourists, reason being the cool weather and well developed public places. To make the best use of this time, Zigron had planned a Bar-B-Que event in Rawal Lake View Park, on December 25th, 2008. The park is the back side of Rawal Lake that is one [...]]]></description>
			<content:encoded><![CDATA[<p>This is the best time to visit Pakistan for tourists, reason being the cool weather and well developed public places. To make the best use of this time, Zigron had planned a Bar-B-Que event in <a href="http://en.wikipedia.org/wiki/Rawal_Lake">Rawal Lake View Park</a>, on December 25th, 2008. The park is the back side of Rawal Lake that is one of the big artificial water reservoirs [covering an area of about 8.8km] in Pakistan.</p>
<p>Being a public holiday, it was a busiest day at the spot with so many people round, and it was good to see such big crowd there, which has previously been seen only in the metropolitan city <a href="http://en.wikipedia.org/wiki/Karachi">Karachi</a>. Other than crowd, the much noticeable thing was Lake View itself, all water and water, and then the delicious Bar-B-Que. How much people enjoyed there, can&#8217;t be expressed in words, but definitely in pictures below:</p>
<p style="visibility:visible;"><object type="application/x-shockwave-flash" data="http://widget-9f.slide.com/widgets/slideticker.swf" height="320" width="426" style="width:426px;height:320px"><param name="movie" value="http://widget-9f.slide.com/widgets/slideticker.swf" /><param name="quality" value="high" /><param name="scale" value="noscale" /><param name="salign" value="l" /><param name="wmode" value="transparent"/><param name="flashvars" value="cy=ms&#038;il=1&#038;channel=1945555039044969375&#038;site=widget-9f.slide.com"/></object>
<p style="white-space:nowrap"><a href="http://www.slide.com/pivot?cy=ms&#038;at=un&#038;id=1945555039044969375&#038;map=1" target="_blank"><img src="http://widget-9f.slide.com/p1/1945555039044969375/ms_t024_v000_s0un_f00/images/xslide1.gif" border="0" ismap="ismap" /></a> <a href="http://www.slide.com/pivot?cy=ms&#038;at=un&#038;id=1945555039044969375&#038;map=2" target="_blank"><img src="http://widget-9f.slide.com/p2/1945555039044969375/ms_t024_v000_s0un_f00/images/xslide2.gif" border="0" ismap="ismap" /></a> <a href="http://www.slide.com/pivot?cy=ms&#038;at=un&#038;id=1945555039044969375&#038;map=F" target="_blank"><img src="http://widget-9f.slide.com/p4/1945555039044969375/ms_t024_v000_s0un_f00/images/xslide42.gif" border="0" ismap="ismap" /></a></p></p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/LdJp8aL7h-o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2008/12/26/zigron-bar-b-que-event/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2008/12/26/zigron-bar-b-que-event/</feedburner:origLink></item>
		<item>
		<title>Will 2009 Be The Year Of iPhone  Gaming?</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/6zK1KeH7qgU/</link>
		<comments>http://www.zigron.com/blog/2008/12/24/will-2009-be-the-year-of-iphone-gaming/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 14:31:32 +0000</pubDate>
		<dc:creator>Qurratulain Akhtar</dc:creator>
		
		<category><![CDATA[Mobile]]></category>

		<category><![CDATA[Gaming]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[Mobile Gaming]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=174</guid>
		<description><![CDATA[Almost all of us have played a mobile game at least once in lifetime. This fact makes mobile gaming the most active area of mobile content. The question that why people play mobile games may have many answers but a simple answer is simplicity and ease of use of these games, so anyone can play [...]]]></description>
			<content:encoded><![CDATA[<p>Almost all of us have played a mobile game at least once in lifetime. This fact makes mobile gaming the most active area of mobile content. The question that why people play mobile games may have many answers but a simple answer is simplicity and ease of use of these games, so anyone can play them anywhere. The popularity of mobile games can be analyzed from the fact that, the first question that raised with the launch of iPhone was, <em>&#8220;Where are iPhone games?&#8221;</em>.</p>
<p><a href="http://www.zigron.com/blog/wp-content/uploads/2008/12/knibble.jpg"><img class="alignleft size-medium wp-image-175" title="knibble" src="http://www.zigron.com/blog/wp-content/uploads/2008/12/knibble-300x188.jpg" alt="knibble" width="300" height="188" /></a>Technology has always revolutionized things, especially the entertainment economy. Innovations like touchscreen have renovated the business economy till yet, but it&#8217;s just one half, the other and the big one lies in the entertainment economy. iPhone when launched was an innovation in the mobile handsets and sort of threat for the competitors, but since mobile is the industry with a lot of business models associated with it, it&#8217;s now having impact on many other areas of economy, especially the marketing industry with ad-funded games and applications. Particularly in gaming, it&#8217;s also considered as <a href="http://games.techwhack.com/2171-iphone-nintendo-ds">Nintendo and Sony PSP&#8217;s rival</a>, being richer in experience, and providing same sort of game development environment to the developers.  One other reason for the popularity of iPhone is the network gaming experience it gives with simple WiFi connections, that&#8217;ll get richer with 3G.</p>
<p>The reason for iPhone to revolutionize the arena of mobile marketing is nothing other than that it&#8217;s the best mobile gaming platform as compared to others existing in the market. And, it&#8217;s not just the iPhone buzz, instead the facts. According to the <a href="http://gigaom.com/2008/07/10/iphone-owners-seem-crazy-for-games/">stats released by AOL</a> in the mid of 2008, iPhone gamers generate four times of the page views as compared to players with other handsets, i.e. iPhone players have an average session of 21 minutes with 65 page views, while for others an average session is of 11 minutes with 15 page  views.</p>
<p><a href="http://www.screendigest.com/">Screen Digest</a> which is a Global Media Market Research firm, reports that by 2012, advertising on mobile will worth $2.79 billion, and ad-funded games download will go upto 60 million per year [<a href="http://www.mobilemarketingmagazine.co.uk/2008/04/screen-digest-r.html">Source</a>]. Since it&#8217;ll be touchscreen, ruling the mobile gaming world in near future, iPhone sounds to have the major market share. But the reason for iPhone&#8217;s lead in the market is not touchscreen only, instead it&#8217;s price and it&#8217;s popularity among all age groups and from different spheres of life, while other touchscreen handsets are having a target market of business professionals.</p>
<p>All above is my limited research, and m&#8217; sure that iPhone will have lead in mobile gaming in the coming year. I&#8217;ll, however, appreciate if I happen to find some twist in this whole scene, with some authentic information.</p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/6zK1KeH7qgU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2008/12/24/will-2009-be-the-year-of-iphone-gaming/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2008/12/24/will-2009-be-the-year-of-iphone-gaming/</feedburner:origLink></item>
		<item>
		<title>PingMyCompany named as one of the most underrated sites of 2008 by Mashable.com</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/gVAAh7tjR20/</link>
		<comments>http://www.zigron.com/blog/2008/12/23/pingmycompany-named-as-one-of-the-most-underrated-sites-of-2008-by-mashablecom/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 06:37:11 +0000</pubDate>
		<dc:creator>Haris Khan</dc:creator>
		
		<category><![CDATA[PingMyCompany]]></category>

		<category><![CDATA[Zigron Inc]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=170</guid>
		<description><![CDATA[Mashable.com recently added Zigron&#8217; s PingMyCompany.com to its list of most underrated websites of 2008.
You can read the the story and the list here on Mashable.com]]></description>
			<content:encoded><![CDATA[<p>Mashable.com recently added Zigron&#8217; s <a href="http://www.pingmycompany.com" target="_blank">PingMyCompany.com</a> to its list of most underrated websites of 2008.</p>
<p>You can read the the story and the list <a href="http://mashable.com/2008/12/20/underrated-websites/" target="_blank">here on Mashable.com</a></p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/gVAAh7tjR20" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2008/12/23/pingmycompany-named-as-one-of-the-most-underrated-sites-of-2008-by-mashablecom/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2008/12/23/pingmycompany-named-as-one-of-the-most-underrated-sites-of-2008-by-mashablecom/</feedburner:origLink></item>
		<item>
		<title>Writing Custom jsf Components</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/oZDlI2xPk_o/</link>
		<comments>http://www.zigron.com/blog/2008/12/17/writing-custom-jsf-components/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 12:48:24 +0000</pubDate>
		<dc:creator>Ali Noor</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[J2EE]]></category>

		<category><![CDATA[jsf Components]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=159</guid>
		<description><![CDATA[What is JSF
 JSF is a server side UI Component based framework for java based web applications. It adapts Component centric approach to develop java web user interfaces, hence simplifying the development. JSF follows the MVC design pattern and creates the manageable separation between the view, application data and logic. 
 Since the true power [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What is JSF</strong></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span> </span>JSF is a server side UI Component based framework for java based web applications. It adapts Component centric approach to develop java web user interfaces, hence simplifying the development. JSF follows the MVC design pattern and creates the manageable separation between the view, application data and logic. </span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span> </span>Since the true power of JSF lies in the UI component model and JSF allows us to use prebuilt components or we can build our own, depending on our requirements.</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Let’s start with creating a custom component, which would also help us understand who the compoenent model works in jsf.</span></p>
<blockquote>
<p class="MsoNormal"><strong><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Writing a Custom JSF Component</span></strong></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span> </span>Lets start with a simple component which takes the email address as an input. </span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span> </span>A component is made up of three main classes</span></p>
<p class="ListParagraph" style="margin-left: 1in; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;;"><span>o<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">UIComponent subclass.</span></p>
<p class="ListParagraph" style="margin-left: 1in; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;;"><span>o<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Renderer</span></p>
<p class="ListParagraph" style="margin-left: 1in; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;;"><span>o<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">UIComponentTag<strong> </strong>subclass</span></p>
<p class="ListParagraph"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">First of all we start building a UIComponent subclass, since our component is and input component we would extend this class by</span> <em><span style="background: silver none repeat scroll 0% 0%; font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;">javax.faces.component.UIInput</span></em><em><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;">.</span></em></p>
<p class="MsoNormal"><span> </span><strong><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Here is how our class looks like</span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">class</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> EmailComponent </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">extends</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> <span style="background: silver none repeat scroll 0% 0%;">UIInput</span> {</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">static</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">final</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String </span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">EMAIL_FAMILY</span></em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> = </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;EMAILFAMILY&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> EmailComponent() {</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">super</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">();</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>addValidator(</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">new</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> EmailValidator());</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String getFamily() {</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">EMAIL_FAMILY</span></em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">The only thing that needs explanation in this class is getFamily() method, this method is used to get the component family which is used to look up the renderer for this component when HTML is to be generated for this component. </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">addValidator();<span> </span>is used to make sure that the user enters a valid email address. The EmailValidator class looks like this,</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">class</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> EmailValidator </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">implements</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> Validator {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> validate(FacesContext context, </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>UIComponent component, </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>Object value)</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">throws</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> ValidatorException {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> != value) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (!(value </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">instanceof</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String)) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">throw</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">new</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> IllegalArgumentException(</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;The value must be a String&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>String email = (String) value;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span style="background: silver none repeat scroll 0% 0%;">Pattern</span> emailPattern = <span style="background: silver none repeat scroll 0% 0%;">Pattern</span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.<em>compile</em>(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> +</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;(?:\\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> +</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> +</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>Matcher emailMatcher = emailPattern</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.matcher(email);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (!emailMatcher.matches()) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">throw</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">new</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> ValidatorException(</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">new</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> FacesMessage(</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;Please enter a valid Email Address&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">));</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;">
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">The important thing to know in this validator is if the string does not match the Matcher, then a new FacesMessage is created and a ValidatorException is thrown. JSF will interpret the ValidationException and get the message from it.</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Another important thing is, this validator is not part of building a custom component.</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">We have created a UIComponent Subclass, now next step is to create a renderer, renderer is responsible for turning the component into HTML and taking posted HTML and turning it into values suitable for the component, these processes are also referred as encoding and decoding.</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Below is the code for the renderer, I think the comments on the code are explaining it well.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;"> </span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;"> </span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;"> </span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;"> </span></strong></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">class</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> EmailRenderer </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">extends</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> Renderer {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//THIS METHOD IS RESPONSIBLE FOR TAKING ANY PARAMETERS THAT WERE PASSED </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//IN FROM A FORM POST AND SETTING THE VALUE<span> </span>ON THE COMPONENT</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> decode(FacesContext context,</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>UIComponent component) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>assertValidInput(context, component);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (component </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">instanceof</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> UIInput) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>UIInput input = (UIInput) component;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>String clientId = input</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.getClientId(context);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>Map requestMap = context</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.getExternalContext()</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.getRequestParameterMap();</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>String newValue = (String) requestMap</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.get(clientId);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> != newValue) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>input.setSubmittedValue(newValue);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//THIS METHOD IS RESPONSIBLE FOR BUILDING THE HTML TO REPRESENT //THE COMPONENT IN THE BROWSER</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//BASICALLY THERE ARE THREE ENCODING METHODS ENCODEBEGIN(), //ENCODECHILDREN() AND ENCODEEND().</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//SINCE OUR COMPONENT DOESN&#8217;T HAVE ANY CHILDREN WE DON&#8217;T NEED //PREVIOUS TWO METHODS.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> encodeEnd(FacesContext ctx,</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>UIComponent component) </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">throws</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> IOException {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>assertValidInput(ctx, component);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>ResponseWriter writer = ctx</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.getResponseWriter();</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>writer.startElement(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;input&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, component);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>writer.writeAttribute(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;type&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;text&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;text&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>String id = (String) component</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span>.getClientId(ctx);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>writer.writeAttribute(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;id&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, id, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;id&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>writer.writeAttribute(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;name&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, id, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;id&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>String size = (String) component</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.getAttributes().get(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;size&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> != size) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>writer.writeAttribute(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;size&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, size, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;size&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>Object currentValue = getValue(component);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>writer.writeAttribute(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;value&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">,</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>formatValue(currentValue), </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;value&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>writer.endElement(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;input&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">protected</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> Object getValue(UIComponent component) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span>Object value = </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (component </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">instanceof</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> UIInput) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>value = ((UIInput) component)</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.getSubmittedValue();</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">// if its not a UIInput or the submitted value</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">// was null then get the value (it should</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">// always be a UIInput)</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> == value</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>&amp;&amp; component </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">instanceof</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> ValueHolder) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>value = ((ValueHolder) component)</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.getValue();</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> value;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">private</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String formatValue(Object currentValue) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//THIS METHOD SHOULD PERFORM THE CONVERSION NEEDED.IN OUR //CASE WE JUST NEED A STRING.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> currentValue.toString();</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">private</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> assertValidInput(</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>FacesContext context, UIComponent component) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (context == </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">throw</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">new</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> NullPointerException(</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;context should not be null&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>} </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">else</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (component == </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">throw</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">new</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> NullPointerException(</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;component should not be null&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">We are done with the first two classes, now the last class is the subclass of UIComponentTag.</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Below is the code for this class</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">class</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> EmailInputTag </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">extends</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> UIComponentTag {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">private</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">size</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">private</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">private</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">static</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">final</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String </span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">EMAIL_COMP_TYPE</span></em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> = </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;EMAIL_INPUT&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">private</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">static</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">final</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String </span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">EMAIL_RENDER_TYPE</span></em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> = </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;EMAIL_RENDERER&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #646464;">@Override</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String getComponentType() {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">EMAIL_COMP_TYPE</span></em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #646464;">@Override</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String getRendererType() {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">EMAIL_RENDER_TYPE</span></em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">protected</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> setProperties(</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>UIComponent component) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>FacesContext context = FacesContext</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>.<em>getCurrentInstance</em>();</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">super</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.setProperties(component);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> != </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">size</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>component.getAttributes().put(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;size&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">size</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">null</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> != </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (<em>isValueReference</em>(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">)) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span><span> </span>ValueExpression ve= context.getApplication().getExpressionFactory().createValueExpression<br />
(context.getELContext(),</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">,String.</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">class</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">); </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span><span> </span>component.setValueExpression(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;value&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">, ve);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>} </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">else</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>((UIInput) component).setValue(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String getSize() {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">size</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> setSize(String size) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">this</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">size</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> = size;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> String getValue() {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">void</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> setValue(String value) {</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">this</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000c0;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> = value;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Two important methods here, getComponentType() and getRendererType().</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">getComponentType() returns the type of the component that should be created by the tag,this type is sent to the factory for the resolution of the class name and then the instance is created,</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">getRendererType() returns the type of the renderer and the instance is created the same way as mentioned above. These two methods are</span><span style="font-size: 10pt; line-height: 115%; font-family: Verdana; color: black;"> </span><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">responsible for making the connection between the renderer and the component.</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Now we are done with all the coding now we have to do some configuration, in faces-config.xml file we have to register our</span><span style="font-size: 10pt; line-height: 115%; font-family: Verdana; color: black;"> </span><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">custom component with its renderer, like this.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component-type</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>EMAIL_INPUT</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component-type</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component-class</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span><span> </span>com.zigron.component.EmailComponent</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component-class</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><em>Note the &lt;component-type&gt; tag, this is the component type we defined in <strong>com.zigron.tag.EmailInputTag</strong><span> </span>class.</em></p>
<p class="MsoNormal" style="margin-left: 0.5in;">And the renderer<span> </span>like this,</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">render-kit</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">renderer</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">description</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>Renderer for the Email Input component.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">description</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component-family</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">EMAILFAMILY</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">component-family</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">renderer-type</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>EMAIL_RENDERER</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">renderer-type</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">renderer-class</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span><span> </span>com.zigron.renderer.EmailRenderer</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">renderer-class</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">renderer</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: #3f7f7f;">render-kit</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;"> </span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">One more missing piece is a the tld that would define the tag for JSP, I would paste a part of the email.tld here.</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">tlib-version</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">0.01</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">tlib-version</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">jsp-version</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">1.2</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">jsp-version</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">short-name</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Email Input Example Component Tag Library</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">short-name</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">uri</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><a href="http://www.zigron.com/jsf/component/email" rel="nofollow">http://www.zigron.com/jsf/component/email</a></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">uri</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">description</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;">This tag library has the tags for the custom jsf component, which is just a simplest example, hence most of the attributes are ignored in this tld</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">description</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">tag</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">name</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">emailInput</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">name</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">tag-class</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">com.zigron.tag.EmailInputTag</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">tag-class</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">body-content</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">empty</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">body-content</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">description</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span>This is the tag for the Email input component.</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: #3f7f7f;">description</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">&lt;attribute&gt;….&lt;/attribute&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">…….</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">&lt;/tag&gt;</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;">
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Now we have to use this tag on JSP, for that we need to import our taglib, with the URI we mentioned in our email.tld, i.e<span> </span></span><strong><em><span style="font-size: 10pt; line-height: 115%; font-family: Verdana; color: black;"><a href="../../jsf/component/email"><span><a href="http://www.zigron.com/jsf/component/email" rel="nofollow">http://www.zigron.com/jsf/component/email</a></span></a></span></em></strong></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Here is the example JSP code,</span></p>
<p class="MsoNormal">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #bf5f3f;">&lt;%@</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">taglib </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">prefix</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;h&#8221;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">uri</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;http://java.sun.com/jsf/html&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #bf5f3f;">%&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #bf5f3f;">&lt;%@</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">taglib </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">prefix</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;f&#8221; </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">uri</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;http://java.sun.com/jsf/core&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #bf5f3f;">%&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #bf5f3f;">&lt;%@</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">taglib </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">prefix</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;email&#8221;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">uri</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;http://www.zigron.com/jsf/component/email&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #bf5f3f;">%&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">html</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">head</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">title</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">Custom Email Component</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">title</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">head</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">body</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">f:view</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">p</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">h:messages </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">id</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;messageList&#8221; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">showSummary</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;true&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">/&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">p</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">h:form</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">h:outputLabel </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">for</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;test&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">h:outputText </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">id</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;testLabel&#8221; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;Email Address:&#8221;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">/&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">h:outputLabel</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">email:emailInput </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">id</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;test&#8221; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">size</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;19&#8243;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&#8220;<span style="color: black;">#{test.emailAddress}</span>&#8220;<span style="color: teal;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">br</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">/&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">h:commandButton </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">value</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;Save&#8221; </span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;"><span> </span><span> </span><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">action</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">&#8220;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">#{test.showEmailAddress}</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">&#8220;<span style="color: teal;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">h:form</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">f:view</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span> </span></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">body</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: #3f7f7f;">html</span><span style="font-size: 10pt; line-height: 115%; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
</blockquote>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">In this jsp test is the managed bean registered in faces-config.xml.</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Now by combining all the above pieces together our component is now ready to serve.</span></p>
<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Just for an over view , here is the step by step explanation</span></p>
<p class="ListParagraph" style="margin-left: 73.5pt; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span>1.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">The URI prefix is used to find the uri in the tld, (<em>email </em>is the prefix in our example)</span></p>
<p class="ListParagraph" style="margin-left: 73.5pt; text-indent: -0.25in;"><!--[if !supportLists]--><em><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span>2.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span></em><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">From the TLD the tag name and class pointing to that tag, under the URI is located, in our case tag name <em>is &lt;name&gt;emailInput&lt;/name&gt; </em>in tld and the tag class is<em> &lt;tag-class&gt;com.zigron.tag.EmailInputTag&lt;/tag-class&gt;.</em></span></p>
<p class="ListParagraph" style="margin-left: 73.5pt; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span>3.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">The <em>getComponentType()</em> method of located tag class(<em>com.zigron.tag.EmailInputTag</em>) is called.</span></p>
<p class="ListParagraph" style="margin-left: 73.5pt; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span>4.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">The returned value<span> </span>is located in the faces-config.xml file to find out the component class against that component type.( as I mentioned earlier as a Note.)</span></p>
<p class="ListParagraph" style="margin-left: 73.5pt; text-indent: -0.25in;"><!--[if !supportLists]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;"><span>5.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;"> </span></span></span><!--[endif]--><span style="font-size: 10pt; line-height: 115%; font-family: Verdana;">Finally the component class is located from the faces-config.xml.</span></p>
<p class="ListParagraph" style="margin-left: 73.5pt; text-indent: -0.25in;">
<p>Download Complete Document <a href="http://www.zigron.com/blog/wp-content/uploads/2008/12/custom.rar">Here</a></p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/oZDlI2xPk_o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2008/12/17/writing-custom-jsf-components/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2008/12/17/writing-custom-jsf-components/</feedburner:origLink></item>
		<item>
		<title>Mobile Development &amp; Marketing: Current Issues &amp; Challenges</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/9ZUZW6DhMok/</link>
		<comments>http://www.zigron.com/blog/2008/12/11/mobile-development-marketing-current-issues-challenges/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 12:25:02 +0000</pubDate>
		<dc:creator>Qurratulain Akhtar</dc:creator>
		
		<category><![CDATA[Mobile]]></category>

		<category><![CDATA[Mobile Development]]></category>

		<category><![CDATA[Mobile Marketing]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=152</guid>
		<description><![CDATA[The world is evolving and the trends changing, making the world faster than ever before and technology more stable. With the invention of first pager in 1959 by Motorola, the world started getting mobile. The launch of first commercial mobile phone by NTT in Japan was the next step to stabilize this mobility.
The innovation in [...]]]></description>
			<content:encoded><![CDATA[<p>The world is evolving and the trends changing, making the world faster than ever before and technology more stable. With the invention of first pager in <a href="http://inventors.about.com/od/pstartinventions/a/pager.htm">1959 by Motorola</a>, the world started getting mobile. The launch of first commercial mobile phone by <a href="http://www.ntt.co.jp">NTT</a> in Japan was the next step to stabilize this mobility.</p>
<p>The innovation in this mobility with SMS happened to be <a href="http://en.wikipedia.org/wiki/Short_message_service">originated in Europe in 1985</a>. SMS was a boom in the later part of 1900s and early 2000s, and still it&#8217;s the top cellular activity. There&#8217;re above 4 billion mobile phone subscribers, with 74% of them using SMS of which 94% of SMSs are read. Just in UK <a href="http://www.mobilemarketingmagazine.co.uk/2008/07/mda-stats-revea.html">1.4 billion text messages now being sent every week</a>.</p>
<p>This is just an overview of mobile phones and SMS,  innovations like iPhone, Blackberry, Android and mobile-internet integration are constantly opening the new horizons of excellence for mobile marketing. Web marketing is one of the most cost effective marketing methods with maximum outreach. Since there&#8217;re more mobile phone subscribers than that of internet users, so mobile opens broad ways for marketing from small and medium to large businesses.</p>
<p>Mobile-web integrated marketed is still in the process of development, reason being the lack of awareness among most of mobile phone subscribers, i.e. there&#8217;re about 10 million users worldwide using GPRS services that makes only about 0.25% of the total subscribers. But, this low percentage doesn&#8217;t mean that mobile marketing is not growing. There&#8217;re various methods within mobile marketing including <a href="http://en.wikipedia.org/wiki/Mobile_Marketing">SMS Marketing, Ingame Mobile Marketing, Location Based Services</a> etc.</p>
<p>Ingame Mobile Marketing is the fastly growing area and the future  of mobile marketing. The reason is that more than 90% of mobile phone subscribers play mobile games. From simple interactive real-time 3D games to massive multi-player and social networking games, mobile gaming is everywhere. This trend is accelerating the growth of mobile 2.0 on one hand and hence the mobile development on other.</p>
<p>Mobile development being the next big thing is now the focus of small, medium and large business, and hence it&#8217;s becoming a competitive industry. The competition is becoming tougher as the industry leaders <a href="http://www.ciol.com/Developer/Open-Source/Feature/Open-source-in-mobile-phones-challenges-for-ISVs/241008111909/0/">Nokia and Google have moved to opensource</a>, and this situation is critical for <a href="http://en.wikipedia.org/wiki/Independent_software_vendor">ISVs</a>.</p>
<p><a href="http://community.zdnet.co.uk/blog/0,1000000567,10009540o-2000458459b,00.htm">ZDNet</a> also reports that, it&#8217;ll not be the great UI as only challenge instead, things that matter more are ideas and methodologies. Though ISV&#8217;s are more under pressure, but companies will have equal pressure and will have to face almost same challenges. It&#8217;ll be the race of collective innovation [what I can term it as] or Product Innovation [combination of innovation in methodologies, design, productivity etc] so, innovation in over all performance will win!</p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/9ZUZW6DhMok" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2008/12/11/mobile-development-marketing-current-issues-challenges/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2008/12/11/mobile-development-marketing-current-issues-challenges/</feedburner:origLink></item>
		<item>
		<title>Live Broadcast Of Usability Event From NUST Islamabad</title>
		<link>http://feedproxy.google.com/~r/ZigronInc/~3/tJ51ZS0OMwk/</link>
		<comments>http://www.zigron.com/blog/2008/12/01/live-broadcast-of-usability-event-from-nust-islamabad/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 14:34:54 +0000</pubDate>
		<dc:creator>Qurratulain Akhtar</dc:creator>
		
		<category><![CDATA[User Experience]]></category>

		<category><![CDATA[Zigron Inc]]></category>

		<guid isPermaLink="false">http://www.zigron.com/blog/?p=138</guid>
		<description><![CDATA[This post will be serving as a live broadcast for our Usability Event which is going to be held tomorrow Tuesday, December 2, 2008. So, please, bookmark it for the live updates. It&#8217;ll be great, but a lot depends on the wifi availability there.
A detailed overview of the event will be a part of our [...]]]></description>
			<content:encoded><![CDATA[<p>This post will be serving as a live broadcast for our <a href="http://www.zigron.com/blog/2008/11/27/upcoming-event-usabilitywhy-should-you-care/">Usability Event</a> which is going to be held tomorrow Tuesday, December 2, 2008. So, please, bookmark it for the live updates. It&#8217;ll be great, but a lot depends on the wifi availability there.</p>
<p>A detailed overview of the event will be a part of our post event activity, and live updates will help us gather more and more public opinions. Bloggers/web analysts/user experience gurus/usability geeks are welcomed to blog about it on their blogs and or write us their views.</p>
<p>Feedback will be highly appreciated, so stay tuned!</p>
<p><iframe src="http://www.coveritlive.com/index2.php/option=com_altcaster/task=viewaltcast/altcast_code=07efaee395/height=550/width=470" scrolling="no" height="550px" width="470px" frameBorder ="0" ></iframe></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="319" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="allowFullScreen" value="false" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="sameDomain" /><param name="quality" value="high" /><param name="bgcolor" value="#333333" /><param name="FlashVars" value="playback=false&amp;polling=true&amp;safelink=zigron&amp;userlock=true&amp;skiplive=false" /><param name="src" value="http://qik.com/swfs/qik_player.swf" /><embed type="application/x-shockwave-flash" width="425" height="319" src="http://qik.com/swfs/qik_player.swf" flashvars="playback=false&amp;polling=true&amp;safelink=zigron&amp;userlock=true&amp;skiplive=false" bgcolor="#333333" quality="high" allowscriptaccess="sameDomain" wmode="transparent" allowfullscreen="false" align="middle"></embed></object><br />
Follow us at Twitter: <a href="http://www.twitter.com/zigron">http://www.twitter.com/zigron</a></p><img src="http://feeds.feedburner.com/~r/ZigronInc/~4/tJ51ZS0OMwk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.zigron.com/blog/2008/12/01/live-broadcast-of-usability-event-from-nust-islamabad/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.zigron.com/blog/2008/12/01/live-broadcast-of-usability-event-from-nust-islamabad/</feedburner:origLink></item>
	</channel>
</rss>
