<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>MyFaces Weblog</title>
	<atom:link href="http://sidslog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sidslog.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 17 Feb 2009 23:52:02 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='sidslog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/5d50aba598cdccda48488f30ffde5200?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>MyFaces Weblog</title>
		<link>http://sidslog.wordpress.com</link>
	</image>
			<item>
		<title>Работа с 1С с помощью jacob</title>
		<link>http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/</link>
		<comments>http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 23:44:46 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[1с]]></category>
		<category><![CDATA[com]]></category>
		<category><![CDATA[jacob]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/</guid>
		<description><![CDATA[Основная задача состояла в синхронизации нашего сервиса с 1С(списком контрагентов, номенклатуры и т.д.)
При этом 1С могла быть как на dbf-файлах, так и на MSSQL, поэтому было решено испольнозовать COM для связи сервиса с 1С. Конечно, если бы 1С работала на SQL, гораздо проще было бы общаться с ней с помощью jdbc драйвера, но так как [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=22&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Основная задача состояла в синхронизации нашего сервиса с 1С(списком контрагентов, номенклатуры и т.д.)<br />
При этом 1С могла быть как на dbf-файлах, так и на MSSQL, поэтому было решено испольнозовать COM для связи сервиса с 1С. Конечно, если бы 1С работала на SQL, гораздо проще было бы общаться с ней с помощью jdbc драйвера, но так как варианты конфигурации могли быть самые разные, использование сom решало все проблемы.<br />
<a href="http://www.jacob.ca/">JACOB</a> идеально подошел нашим требованиям. Дальше задача выглядела тривиально: переписать код 1С через com.</p>
<p>Инициализация и авторизация в 1С:</p>
<p><span style="font-family:verdana;"> try {<br />
sC = new ActiveXComponent(_1CUtils.V7_APPLICATION);<br />
sControl = (Dispatch)sC.getObject();<br />
} catch (Exception e) {<br />
e.printStackTrace();<br />
throw new _1CException(_1CException._1C_NOT_AVAILABLE) ;<br />
}</span></p>
<p><span style="font-family:verdana;"> int rmTradeId ;<br />
try {<br />
rmTradeId = Dispatch.getIDOfName(sC, _1CUtils.V7_RM_TRADE) ;<br />
} catch (Exception e) {<br />
e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.<br />
throw new _1CException(_1CException.RM_TRADE_NOT_AVAILABLE);<br />
}<br />
Variant rmTradeVar = Dispatch.invoke(sControl, rmTradeId, Dispatch.Get, new Object[]{}, new     int[]{rmTradeId}) ;</span></p>
<p><span style="font-family:verdana;"> int id = Dispatch.getIDOfName(sControl, _1CUtils.V7_INITIALIZE) ;</span></p>
<p><span style="font-family:verdana;"> Object[] args = new Object[3] ;</span></p>
<p><span style="font-family:verdana;"> args[0] = rmTradeVar.getInt() ;<br />
args[1] = &laquo;/D&raquo; + ResourceUtils.getResource(&laquo;path&raquo;) + &raquo; /N&raquo; + ResourceUtils.getResource(&laquo;user&raquo;) + &raquo; /P&raquo; +   ResourceUtils.getResource(&laquo;password&raquo;)  ;<br />
args[2] = new Variant(&laquo;NO_SPLASH_SHOW&raquo;).getString() ;</span></p>
<p><span style="font-family:verdana;"> Variant result = Dispatch.invoke(sControl, _1CUtils.V7_INITIALIZE, Dispatch.Get, args, new int[]{id}) ;</span></p>
<p><span style="font-family:verdana;"> if (!result.getBoolean())  {<br />
throw new _1CException(_1CException.NOT_AUTHORISED);<br />
}</span></p>
<p>В переменных  _1CUtils.V7_APPLICATION, _1CUtils.V7_RM_TRADE, _1CUtils.V7_INITIALIZE хранятся соответсвующие значения:</p>
<ul>
<li>V77.Application</li>
<li>RMTrade</li>
<li>Initialize</li>
</ul>
<p>Для авторизации используется второй параметр функции Initialize &#8211; &laquo;/DПуть /NПользователь /PПароль&raquo;.</p>
<p>Далее, используя стандартные функции 1С, мы можем получить доступ ко всем данным.</p>
<ul>
<li>Для чтения свойства справочника воспользоваться функцией GetAttrib, для записи &#8211; SetAttrib.</li>
<li>Для создания объекта &#8211; CreateObject</li>
<li>Для поиска &#8211; FindByCode, FindByDescr</li>
<li>Для выбора из перечисления функциями &#8211; ValueByIdentifier</li>
<li>Для создания нового объекта &#8211; New</li>
<li>Для получения текщуго значения &#8211; CurrentItem, выбора значений -SelecвtItems, выбора текущего значения &#8211; GetItem</li>
<li>Для записи &#8211; Write</li>
<li>и т.д.</li>
</ul>
<p>Прекрасный справочник по работе с функциями 1С можно скачать <a href="http://komm.gaz.ru/doka/doc/1c/1C_pr77_Lang1.doc">здесь</a></p>
<p>Весь функционал работы с 1С был вынесен на отдельный сервер под Windows)), общение с которым осуществлялось псредством веб-сервисов(использовалась связка tomcat+metro).</p>
<p>Не забудьте положить jacob.dll в classpath(или Windows/system32/)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=22&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2009/02/17/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-1%d1%81-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-jacob/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
		<item>
		<title>Hibernate + MySQL5 (MappingException: JDBC type = -1)</title>
		<link>http://sidslog.wordpress.com/2008/07/09/hibernate-mysql5-mappingexception-jdbc-type-1/</link>
		<comments>http://sidslog.wordpress.com/2008/07/09/hibernate-mysql5-mappingexception-jdbc-type-1/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 11:16:36 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jdbc type -1]]></category>
		<category><![CDATA[mappingexception]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/2008/07/09/hibernate-mysql5-mappingexception-jdbc-type-1-2/</guid>
		<description><![CDATA[Проблема возникала при использовании Native Query в Jboss-4.2.2. В качестве БД использовалась MySQL 5.*. То есть при запуске запросов вида :

Query query =getEntityManager().createNativeQuery(&#171;SELECT agr.AGREEMENTID , enc.NAME\n&#187; +&#171;\tFROM GEL$DOC$AGREEMENT agr INNER JOIN GEL$DOC$AGR$ENCLOSURE enc ON (enc.AGREEMENTID = agr.AGREEMENTID)\n&#187; +&#171;UNION\n&#187; +&#171;SELECT template.TEMPLATEID, tenc.NAME\n&#187; +&#171;\tFROM GEL$DOC$TEMPLATE template INNER JOIN GEL$DOC$TPL$PARAGRAPH tenc ON (tenc.TEMPLATEID = template.TEMPLATEID)&#187;) ;Listobj = query.getResultList() [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=19&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="font-size:10pt;">Проблема возникала при использовании Native Query в Jboss-4.2.2. В качестве БД использовалась MySQL 5.*. То есть при запуске запросов вида :</p>
<p>
<p style="font-size:10pt;background-color:rgb(238, 238, 238);margin-left:25px;">Query query =getEntityManager().createNativeQuery(&laquo;SELECT agr.AGREEMENTID , enc.NAME\n&raquo; +<br />&laquo;\tFROM GEL$DOC$AGREEMENT agr INNER JOIN GEL$DOC$AGR$ENCLOSURE enc ON (enc.AGREEMENTID = agr.AGREEMEN<br />TID)\n&raquo; +<br />&laquo;UNION\n&raquo; +<br />&laquo;SELECT template.TEMPLATEID, tenc.NAME\n&raquo; +<br />&laquo;\tFROM GEL$DOC$TEMPLATE template INNER JOIN GEL$DOC$TPL$PARAGRAPH tenc ON (tenc.TEMPLATEID = templat<br />e.TEMPLATEID)&raquo;) ;<br />List<br />obj = query.getResultList() ;<br />)</p>
<p>
<p style="font-size:10pt;">падала ошибка:</p>
<p>
<p style="font-size:10pt;background-color:rgb(238, 238, 238);margin-left:25px;">ERROR [STDERR] javax.ejb.EJBException: javax.persistence.Persistenc<br />eException: org.hibernate.MappingException:<br />No Dialect mapping for JDBC type: -1</p>
<p>
<p style="font-size:10pt;">Проблема оказалась в использовании полей типа text, которые не мапятся в hibernate.<br />Решить проблему удалось, пересобрав hibernate, изменив в Mysql5Dialect метод registerVarcharTypes и добавив туда строки</p>
<p>
</p>
<p style="font-size:10pt;background-color:rgb(238, 238, 238);margin-left:25px;">registerColumnType(Types.LONGVARCHAR, 65535, &laquo;text&raquo;);<br />registerHibernateType(Types.LONGVARCHAR, 65535, &laquo;text&raquo;);</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/sidslog.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/sidslog.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=19&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2008/07/09/hibernate-mysql5-mappingexception-jdbc-type-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
		<item>
		<title>Поменялся яваскрипт к предыдущему посту</title>
		<link>http://sidslog.wordpress.com/2008/05/27/%d0%bf%d0%be%d0%bc%d0%b5%d0%bd%d1%8f%d0%bb%d1%81%d1%8f-%d1%8f%d0%b2%d0%b0%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%ba-%d0%bf%d1%80%d0%b5%d0%b4%d1%8b%d0%b4%d1%83%d1%89%d0%b5%d0%bc%d1%83-%d0%bf%d0%be/</link>
		<comments>http://sidslog.wordpress.com/2008/05/27/%d0%bf%d0%be%d0%bc%d0%b5%d0%bd%d1%8f%d0%bb%d1%81%d1%8f-%d1%8f%d0%b2%d0%b0%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%ba-%d0%bf%d1%80%d0%b5%d0%b4%d1%8b%d0%b4%d1%83%d1%89%d0%b5%d0%bc%d1%83-%d0%bf%d0%be/#comments</comments>
		<pubDate>Tue, 27 May 2008 14:39:26 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[changed]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[submit]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/?p=16</guid>
		<description><![CDATA[Были ошибки в JS, написанном в предыдущем посте. Те, что нашел, исправил. Также исправил яваскрипт для компоненты, срабатывающей по фокусу. Код самой компоненты появится через пару дней))

Вот исправленный JS:


var searchValue = &#171;&#187; ;

var onloadFunctions = new Array() ;
var onAfterLoad = new Array() ;

var FindHandler = new Object() ;

var searchElements = new Array() ;
var searchStrings = [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=16&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="font-size:10pt;">Были ошибки в JS, написанном в предыдущем посте. Те, что нашел, исправил. Также исправил яваскрипт для компоненты, срабатывающей по фокусу. Код самой компоненты появится через пару дней))</p>
<p></p>
<p style="font-size:10pt;">Вот исправленный JS:</p>
<p></p>
<p style="font-size:10pt;margin-left:25px;background-color:rgb(238, 238, 238);padding-left:10px;">
var searchValue = &laquo;&raquo; ;<br />
<br />
var onloadFunctions = new Array() ;<br />
var onAfterLoad = new Array() ;<br />
<br />
var FindHandler = new Object() ;<br />
<br />
var searchElements = new Array() ;<br />
var searchStrings = new Array() ;<br />
<br />
FindHandler.testClass = function(tagClass, className) {<br />
&nbsp;&nbsp;&nbsp; var classN = new RegExp(&laquo;(^|\\s)&raquo; + className + &laquo;(\\s|$)&raquo;);<br />
&nbsp;&nbsp;&nbsp; return classN.test(tagClass) ;<br />
}<br />
<br />
FindHandler.getParentByClass = function(className, tag) {<br />
&nbsp;&nbsp;&nbsp; while (tag.parentNode) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (tag.className &amp;&amp; this.testClass(tag.className, className)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return tag ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tag = tag.parentNode ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return null ;<br />
}<br />
<br />
FindHandler.getElementsByClassName = function(className, tag) {<br />
&nbsp;&nbsp;&nbsp; var tag = tag || document ;<br />
<br />
&nbsp;&nbsp;&nbsp; var returnElements = new Array() ;<br />
&nbsp;&nbsp;&nbsp; for (var i = 0 ; i &lt; tag.childNodes.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (tag.childNodes[i].className &amp;&amp; this.testClass(tag.childNodes[i].className, className)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; returnElements.push(tag.childNodes[i]) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; for (var i = 0 ; i &lt; tag.childNodes.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ret = this.getElementsByClassName(className, tag.childNodes[i]) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ret) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var j = 0 ; j &lt; ret.length; j ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; returnElements.push(ret[j]) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; return returnElements.length &gt; 0 ? returnElements : null ;<br />
}<br />
<br />
var KeyCode = new Object() ;<br />
KeyCode.VK_ENTER = 13 ;<br />
<br />
var f1 =&nbsp; function() {<br />
&nbsp;&nbsp;&nbsp; var form = document.forms[0] ;<br />
&nbsp;&nbsp;&nbsp; if (form) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.onkeypress = function(e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var key;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (window.event)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key = window.event.keyCode;&nbsp;&nbsp;&nbsp;&nbsp; //IE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key = e.which;&nbsp;&nbsp;&nbsp;&nbsp; //firefox<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (key == KeyCode.VK_ENTER) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var target ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (window.event) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target = window.event.srcElement ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target = e.target ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var parent = FindHandler.getParentByClass(&laquo;useonenter-container&raquo;, target) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (parent) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var controls = FindHandler.getElementsByClassName(&laquo;useonenter-control&raquo;, parent) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (controls &amp;&amp; controls[0]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (controls[0].tagName == &laquo;INPUT&raquo; || controls[0].tagName == &laquo;BUTTON&raquo;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; controls[0].click() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; controls[0].onclick() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
function focusSearch() {<br />
&nbsp;&nbsp;&nbsp; var target ;<br />
&nbsp;&nbsp;&nbsp; if (window.event) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target = window.event.srcElement ;<br />
&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target = this ;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; var index = searchElements.indexOf(target) ;<br />
&nbsp;&nbsp;&nbsp; if (target.value == searchStrings[index]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.value = &laquo;&raquo; ;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
function blurSearch() {<br />
&nbsp;&nbsp;&nbsp; var target ;<br />
&nbsp;&nbsp;&nbsp; if (window.event) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target = window.event.srcElement ;<br />
&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target = this ;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; var index = searchElements.indexOf(target) ;<br />
&nbsp;&nbsp;&nbsp; if (target.value == &laquo;&raquo;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; target.value = searchStrings[index] ;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
var f2 = function() {<br />
&nbsp;&nbsp;&nbsp; var allElements = FindHandler.getElementsByClassName(&#8217;search-value-container&#8217;, null) ;<br />
<br />
&nbsp;&nbsp;&nbsp; var el = new Array() ;<br />
&nbsp;&nbsp;&nbsp; if (allElements) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; allElements.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el[i] = allElements[i] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (el[i]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el[i].onfocus = focusSearch ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; el[i].onblur = blurSearch ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
var setFocusEvents = function() {<br />
&nbsp;&nbsp;&nbsp; if (searchElements &amp;&amp; searchStrings) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (searchElements.length == searchStrings.length) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; searchElements.length; i ++) {<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(searchElements[i]) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchElements[i].onfocus = focusSearch ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchElements[i].onblur = blurSearch ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchElements[i].onfocus ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchElements[i].onblur ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (searchElements[i].value == null || searchElements[i].value == &laquo;&raquo;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchElements[i].value = searchStrings[i] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
var changeBeforeSubmit = function() {<br />
&nbsp;&nbsp;&nbsp; var form = document.forms[0] ;<br />
&nbsp;&nbsp;&nbsp; if (form) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.onsubmit = function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; searchElements.length;&nbsp; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (searchElements[i].value == searchStrings[i]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchElements[i].value = &laquo;&raquo; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
onloadFunctions.push(f1) ;<br />
onloadFunctions.push(f2) ;<br />
onloadFunctions.push(changeBeforeSubmit) ;<br />
onAfterLoad.push(setFocusEvents) ;<br />
<br />
window.onload = function() {<br />
&nbsp;&nbsp;&nbsp; for (var i = 0 ; i &lt; onloadFunctions.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onloadFunctions[i]() ;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; for (var i = 0 ; i &lt; onAfterLoad.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onAfterLoad[i]() ;<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/sidslog.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/sidslog.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=16&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2008/05/27/%d0%bf%d0%be%d0%bc%d0%b5%d0%bd%d1%8f%d0%bb%d1%81%d1%8f-%d1%8f%d0%b2%d0%b0%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%ba-%d0%bf%d1%80%d0%b5%d0%b4%d1%8b%d0%b4%d1%83%d1%89%d0%b5%d0%bc%d1%83-%d0%bf%d0%be/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
		<item>
		<title>Отслеживаем нажатие ENTER внутри формы</title>
		<link>http://sidslog.wordpress.com/2008/05/25/keypress-in-form/</link>
		<comments>http://sidslog.wordpress.com/2008/05/25/keypress-in-form/#comments</comments>
		<pubDate>Sun, 25 May 2008 12:21:48 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[enter]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[myfaces]]></category>
		<category><![CDATA[onkeypress]]></category>
		<category><![CDATA[renderer]]></category>
		<category><![CDATA[tomahawk]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/?p=13</guid>
		<description><![CDATA[На форме jsf-страницы может быть расположено несколько UICommand компонент. Необходима возможность указать, какая компонента должна срабатывать при нажатии ENTER в одном из полей ввода.
Для этого будем обрабатывать onkeypressed  внутри формы. То, какая компонента будет срабатывать и в каком контейнере, будем указывать  с помощью классов &#171;control&#187; и &#171;container&#187;.
Также разработаем jsf-компоненту, которая будет показывать, внутри [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=13&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="font-size:10pt;">На форме jsf-страницы может быть расположено несколько UICommand компонент. Необходима возможность указать, какая компонента должна срабатывать при нажатии ENTER в одном из полей ввода.</p>
<p style="font-size:10pt;">Для этого будем обрабатывать onkeypressed  внутри формы. То, какая компонента будет срабатывать и в каком контейнере, будем указывать  с помощью классов &laquo;control&raquo; и &laquo;container&raquo;.</p>
<p style="font-size:10pt;">Также разработаем jsf-компоненту, которая будет показывать, внутри какого контейнера должен вызываться данный UICommand при нажатии ENTER в поле ввода.</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
&lt;h:form id=&raquo;default&raquo;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:panelGrid id=&raquo;cont&raquo; &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:inputText value=&raquo;#{testInfo.name}&raquo;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:commandButton type=&raquo;button&raquo; action=&raquo;#{testInfo.act1}&raquo; value=&raquo;button&raquo; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:commandLink action=&raquo;#{testInfo.act2}&raquo; value=&raquo;link&raquo; &gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jsfaces:test forId=&raquo;cont&raquo;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/t:commandLink&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/t:panelGrid&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:panelGrid id=&raquo;cont2&#8243;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:inputText value=&raquo;#{testInfo.name}&raquo;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:commandButton  action=&raquo;#{testInfo.act1}&raquo; value=&raquo;button&raquo;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jsfaces:test forId=&raquo;cont2&#8243; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/t:commandButton&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;t:commandLink action=&raquo;#{testInfo.act2}&raquo; value=&raquo;link&raquo; /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/t:panelGrid&gt;<br />
&lt;/h:form&gt;
</p>
<p style="font-size:10pt;">Внутри сont все нажатия ENTER должны обрабатыватся с помощью CommandLink, внутри cont2 &#8211; CommandButton.</p>
<p style="font-size:10pt;">Код JS для обработки нажатия ENTER:</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
var onloadFunctions = new Array() ;<br />
<br />
var FindHandler = new Object() ;<br />
<br />
FindHandler.testClass = function(className) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var classN = new RegExp(&laquo;(^|\\s)&raquo; + className + &laquo;(\\s|$)&raquo;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;return classN.test(className) ;<br />
}<br />
<br />
FindHandler.getParentByClass = function(className, tag) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;while (tag.parentNode) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (tag.className &amp;&amp; this.testClass(tag.className)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return tag ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tag = tag.parentNode ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return null ;<br />
}<br />
<br />
FindHandler.getElementsByClassName = function(className, tag) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var returnElements = new Array() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0 ; i &lt; tag.childNodes.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (tag.childNodes[i].className &amp;&amp; this.testClass(tag.childNodes[i].className)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnElements.push(tag.childNodes[i]) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0 ; i &lt; tag.childNodes.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var ret = this.getElementsByClassName(className, tag.childNodes[i]) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ret) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var j = 0 ; j  0 ? returnElements : null ;<br />
}<br />
<br />
var KeyCode = new Object() ;<br />
KeyCode.VK_ENTER = 13 ;<br />
<br />
var f1 =  function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var form = document.forms[0] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (form) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form.onkeypress = function(e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var key;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.event)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key = window.event.keyCode;     //IE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key = e.which;     //firefox<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (key == KeyCode.VK_ENTER) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var target ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (window.event) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target = window.event.srcElement ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target = e.target ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var parent = FindHandler.getParentByClass(&laquo;container&raquo;, target) ;<br />
//                alert(parent) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (parent) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var controls = FindHandler.getElementsByClassName(&laquo;control&raquo;, parent) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (controls &amp;&amp; controls[0]) {<br />
//                        alert(controls[0].tagName) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (controls[0].tagName == &laquo;INPUT&raquo; || controls[0].tagName == &laquo;BUTTON&raquo;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controls[0].click() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controls[0].onclick() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
onloadFunctions.push(f1) ;<br />
<br />
window.onload = function() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0 ; i &lt; onloadFunctions.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onloadFunctions[i]() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p style="font-size:10pt;">Классы компоненты:</p>
<p style="font-size:10pt;">UITest.java:</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
public class UITest extends UIComponentBase implements NamingContainer {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void restoreState(FacesContext facesContext, Object object) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (object instanceof Object[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[] state = (Object[]) object ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.restoreState(facesContext, state[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;forId = (String) state[1] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.restoreState(facesContext, object);    //To change body of overridden methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public Object saveState(FacesContext facesContext) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[] state = new Object[2] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state[0] = super.saveState(facesContext) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state[1] = forId ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return state ;    //To change body of overridden methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public static final String COMPONENT_TYPE = &laquo;ru.js.faces.component.test.Test&raquo; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public static final String COMPONENT_FAMILY = &laquo;ru.js.faces.component.test.Test&raquo; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;public static final String RENDERER_TYPE = &laquo;ru.js.faces.component.test.TestRenderer&raquo; ;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public UITest() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setRendererType(RENDERER_TYPE) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public String getFamily() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return COMPONENT_FAMILY ;  //To change body of implemented methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;private String forId ;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public String getForId() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return forId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void setForId(String forId) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.forId = forId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p style="font-size:10pt;">TestTag.java:</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
public class TestTag extends UIComponentTag {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public String getComponentType() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return UITest.COMPONENT_TYPE;  //To change body of implemented methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public String getRendererType() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return UITest.RENDERER_TYPE;  //To change body of implemented methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public String forId;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public String getForId() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return forId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void setForId(String forId) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.forId = forId;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;protected void setProperties(UIComponent uiComponent) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.setProperties(uiComponent);    //To change body of overridden methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (null != getForId()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((UITest)uiComponent).setForId(getForId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}
</p>
<p style="font-size:10pt;">TestRenderer.java:</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
public class TestRenderer extends Renderer {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.encodeBegin(facesContext, uiComponent);    //To change body of overridden methods use File | Settings | File Templates.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UITest testComponent = (UITest) uiComponent ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResponseWriter writer = facesContext.getResponseWriter();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.startElement(&laquo;script&raquo;, testComponent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.writeAttribute(&laquo;type&raquo;, &laquo;text/javascript&raquo;, null);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String containerId = ((UITest)uiComponent).getForId() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UIComponent parent = uiComponent.getParent() ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String controlId = parent.getId() ;<br />
<br />
//JavaScript в данном  случае добавляет к фунциям, которые выполнятся при загрузке еще одну. В ней элементам контейнера и контрола будут присваиваться соответствующие классы<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.writeText(&laquo;var &laquo;+ controlId +&raquo;UseOnEnter = function () {  var container = document.getElementById(document.forms[0].id + &#8216;:&#8217; + &#8216;&raquo;+ containerId + &laquo;&#8216;) ;\n&raquo; +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&raquo;var control = document.getElementById(document.forms[0].id + &#8216;:&#8217; + &#8216;&raquo; + controlId + &laquo;&#8216;); \n&raquo; +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&raquo;container.className = container.className + &#8216; container&#8217; ;\n&raquo; +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&raquo;control.className = control.className + &#8216; control&#8217;; }\n&raquo; +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&raquo;onloadFunctions.push(&laquo;+ controlId +&raquo;UseOnEnter)&raquo;, null) ;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.endElement(&laquo;script&raquo;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}
</p>
<p style="font-size:10pt;">Описание компоненты и рендерера в faces-config.xml:</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
&lt;component&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;component-type&gt;ru.js.faces.component.test.Test&lt;/component-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;component-class&gt;ru.js.faces.component.test.UITest&lt;/component-class&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property-name&gt;value&lt;/property-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property-class&gt;java.lang.String&lt;/property-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;<br />
<br />
&lt;/component&gt;<br />
<br />
&lt;render-kit&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;renderer&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;component-family&gt;ru.js.faces.component.test.Test&lt;/component-family&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;renderer-type&gt;ru.js.faces.component.test.TestRenderer&lt;/renderer-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;renderer-class&gt;ru.js.faces.component.test.TestRenderer&lt;/renderer-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/renderer&gt;<br />
&lt;/render-kit&gt;
</p>
<p style="font-size:10pt;">Описание тега в components.tld:</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
&lt;tag&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;test&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;tag-class&gt;ru.js.faces.component.test.TestTag&lt;/tag-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;body-content&gt;empty&lt;/body-content&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;forId&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;type&gt;java.lang.String&lt;/type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;required&gt;true&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;id&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;type&gt;java.lang.String&lt;/type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rtexprvalue&gt;false&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/attribute&gt;<br />
&lt;/tag&gt;
</p>
<p style="font-size:10pt;">Подключение components.tld в web.xml:</p>
<p style="font-size:10pt;margin-left:25px;background-color:#EEEEEE;padding-left:10px;">
&lt;jsp-config&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;taglib&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;taglib-uri&gt;http://jsfaces&lt;/taglib-uri&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;taglib-location&gt;/WEB-INF/components.tld&lt;/taglib-location&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/taglib&gt;<br />
&lt;/jsp-config&gt;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/sidslog.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/sidslog.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=13&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2008/05/25/keypress-in-form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
		<item>
		<title>Myfaces Tomahawk и Javascript изменение надписи при наведении фокуса</title>
		<link>http://sidslog.wordpress.com/2008/05/23/myfaces-focus/</link>
		<comments>http://sidslog.wordpress.com/2008/05/23/myfaces-focus/#comments</comments>
		<pubDate>Fri, 23 May 2008 12:09:48 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[myfaces]]></category>
		<category><![CDATA[tomahawk]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/?p=11</guid>
		<description><![CDATA[На странице расположена таблица с некоторыми данными. Над ней фильтр с полем ввода и кнопкой найти. Изначально в поле ввода значение &#171;Поиск&#8230;&#187;, при наведении фокуса значение пропадает. На то, какое поле ввода будет обрабатываться, будет указывать с помощью класса.
Код jsf:

&#60;h:inputText value=&#187;#{searchInfo.searchName}&#187; styleClass=&#187;search-value-container&#187; /&#62;

&#60;h:commandLink value=&#187; #{resources['command.FIND']} &#187; action=&#187;#{searchInfo.find}&#187; /&#62;

Класс search-value-container указывает на то, что наведение и [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=11&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="font-size:10pt;">На странице расположена таблица с некоторыми данными. Над ней фильтр с полем ввода и кнопкой найти. Изначально в поле ввода значение &laquo;Поиск&#8230;&raquo;, при наведении фокуса значение пропадает. На то, какое поле ввода будет обрабатываться, будет указывать с помощью класса.</p>
<p style="font-size:10pt;">Код jsf:</p>
<p style="font-size:10pt;background-color:#EEEEEE;margin-left:25px;">
&lt;h:inputText value=&raquo;#{searchInfo.searchName}&raquo; styleClass=&raquo;search-value-container&raquo; /&gt;<br />
<br />
&lt;h:commandLink value=&raquo; #{resources['command.FIND']} &raquo; action=&raquo;#{searchInfo.find}&raquo; /&gt;
</p>
<p>Класс search-value-container указывает на то, что наведение и уход фокуса будут обрабатываться у inputText.</p>
<p style="font-size:10pt;">В бине :</p>
<p style="font-size:10pt;background-color:#EEEEEE;margin-left:25px;">
public String getSearchName() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (getName() == null || getName().equals(&laquo;&raquo;)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return Util.getResource(Messages.SEARCH_CODE) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return getName();<br />
}<br />
<br />
public void setSearchName(String name) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (name == null || name.equals(Util.getResource(Messages.SEARCH_CODE)) || name.equals(&laquo;&raquo;)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setName(null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setName(name.trim()) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
public String getName() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return name;<br />
}<br />
<br />
public void setName(String name) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.name = name;<br />
}
</p>
<p style="font-size:10pt;">
Код JS для обработки фокуса:</p>
<p style="font-size:10pt;background-color:#EEEEEE;margin-left:25px;">
var el = new Array() ;<br />
var searchValue = &laquo;&raquo; ;<br />
<br />
function getElementsByClassName(className, tag, elm){<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var testClass = new RegExp(&laquo;(^|\\s)&raquo; + className + &laquo;(\\s|$)&raquo;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var tag = tag || &laquo;*&raquo; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;   var elm = elm || document ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var elements = (tag == &laquo;*&raquo; &amp;&amp; elm.all) ? elm.all : elm.getElementsByTagName(tag) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var returnElements = [] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var current ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var length = elements.length ;<br />
 &nbsp;&nbsp;&nbsp;&nbsp;   for ( var i = 0; i &lt; length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        current = elements[i] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        if (testClass.test(current.className)) {<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           returnElements.push(current) ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        }<br />
&nbsp;&nbsp;&nbsp;&nbsp;    }<br />
&nbsp;&nbsp;&nbsp;&nbsp;    return returnElements ;<br />
}<br />
<br />
function focusSearch() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;    if (this.value == searchValue) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        this.value = &laquo;&raquo; ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;    }<br />
}<br />
<br />
function blurSearch() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;    if (this.value == &laquo;&raquo;) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        this.value = searchValue ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;    }<br />
}<br />
<br />
function load() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var allElements = getElementsByClassName(&#8217;search-value-container&#8217;, null, null) ;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;    for (var i = 0; i &lt; allElements.length; i ++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        el[i] = allElements[i] ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        if (el[i]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            el[i].onfocus = focusSearch ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            el[i].onblur = blurSearch ;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        }<br />
&nbsp;&nbsp;&nbsp;&nbsp;    }<br />
<br />
}<br />
<br />
window.onload = load ;
</p>
<p style="font-size:10pt;">
Для того, чтобы указать, какое значение должно быть в поле ввода, необходимо перед inputText&#8217;ом поместить
</p>
<p style="font-size:10pt;background-color:#EEEEEE;margin-left:25px;">
        &lt;t:jsValueSet name=&raquo;searchValue&raquo; value=&raquo;#{resources['message.SEARCH_CODE']}&raquo; /&gt;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/sidslog.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/sidslog.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=11&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2008/05/23/myfaces-focus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
		<item>
		<title>Решение PermGen OutOfMemoryError</title>
		<link>http://sidslog.wordpress.com/2008/05/17/permgen/</link>
		<comments>http://sidslog.wordpress.com/2008/05/17/permgen/#comments</comments>
		<pubDate>Sat, 17 May 2008 18:01:30 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[OutOfMemory]]></category>
		<category><![CDATA[PermGen]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/?p=10</guid>
		<description><![CDATA[Теория про поколеняи и сборщики мусора
Ошибка PermGen происходит при переполнении памяти в постоянном (permanent) поколении.
Решение:
Использовать синхронизованый сборщик мусора
 -XX:+UseConcMarkSweepGC 
Указать, что сборщик мусора должен вызываться для объектов постоянного поколения
 -XX:+CMSPermGenSweepingEnabled
Указать сборщику на выгрузку классов
 -XX:+CMSClassUnloadingEnabled
Задать количество памяти, выделяемой под постоянное поколение, чтобы сборщик мусора не выгружал классы, необходимые для работы сервера приложений
 -XX:MaxPermSize=128m
Ссылка на оригинал
 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=10&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong><a href="http://www.ibm.com/developerworks/ru/library/j-jtp11253/index.html">Теория про поколеняи и сборщики мусора</a></strong></p>
<p style="font-size:10pt;">Ошибка PermGen происходит при переполнении памяти в постоянном (permanent) поколении.</p>
<p style="font-size:12pt;font-weight:bold;">Решение:</p>
<p style="font-size:10pt;">Использовать синхронизованый сборщик мусора</p>
<p style="color:#444444;font-size:11pt;background-color:#EEEEEE;margin-left:25px;"> -XX:+UseConcMarkSweepGC </p>
<p style="font-size:10pt;">Указать, что сборщик мусора должен вызываться для объектов постоянного поколения</p>
<p style="color:#444444;font-size:11pt;background-color:#EEEEEE;margin-left:25px;"> -XX:+CMSPermGenSweepingEnabled</p>
<p style="font-size:10pt;">Указать сборщику на выгрузку классов</p>
<p style="color:#444444;font-size:11pt;background-color:#EEEEEE;margin-left:25px;"> -XX:+CMSClassUnloadingEnabled</p>
<p style="font-size:10pt;">Задать количество памяти, выделяемой под постоянное поколение, чтобы сборщик мусора не выгружал классы, необходимые для работы сервера приложений</p>
<p style="color:#444444;font-size:11pt;background-color:#EEEEEE;margin-left:25px;"> -XX:MaxPermSize=128m</p>
<p><strong><a href="http://my.opera.com/karmazilla/blog/2007/03/13/good-riddance-permgen-outofmemoryerror">Ссылка на оригинал</a></strong></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/sidslog.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/sidslog.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=10&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2008/05/17/permgen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
		<item>
		<title>JBOSSQL ManyToOne OUTER JOIN</title>
		<link>http://sidslog.wordpress.com/2008/05/16/jbossql-manytoone-outer-join/</link>
		<comments>http://sidslog.wordpress.com/2008/05/16/jbossql-manytoone-outer-join/#comments</comments>
		<pubDate>Fri, 16 May 2008 14:30:11 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jbossql]]></category>
		<category><![CDATA[manytoone]]></category>
		<category><![CDATA[outer join]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/?p=9</guid>
		<description><![CDATA[Класс карточки
public class Card implements Serializable {
private List contributors;
@OneToMany(mappedBy = &#171;card&#187;)
public List getContributors() {
return contributors != null ? contributors : (contributors = new ArrayList());
}
}
Класс контрибутора:
public class Contributor implements Serializable {
private Card card ;
@ManyToOne(targetEntity = Card.class)
@JoinColumn(name = &#171;CARDID&#187;)
public Card getCard() {
return card;
}
}
При выборке карточек для поиска по контрибуторам можно использовать запрос:
getEntityManager().createQuery(&#171;SELECT DISTINCT card  FROM  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=9&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Класс карточки</p>
<p style="font-size:10pt;background-color:#EEEEEE;margin-left:25px;">public class Card implements Serializable {<br />
private List contributors;<br />
@OneToMany(mappedBy = &laquo;card&raquo;)<br />
public List getContributors() {<br />
return contributors != null ? contributors : (contributors = new ArrayList());<br />
}<br />
}</p>
<p>Класс контрибутора:</p>
<p style="font-size:10pt;background-color:#EEEEEE;margin-left:25px;">public class Contributor implements Serializable {<br />
private Card card ;<br />
@ManyToOne(targetEntity = Card.class)<br />
@JoinColumn(name = &laquo;CARDID&raquo;)<br />
public Card getCard() {<br />
return card;<br />
}<br />
}</p>
<p>При выборке карточек для поиска по контрибуторам можно использовать запрос:</p>
<p style="font-size:10pt;background-color:#EEEEEE;margin-left:25px;">getEntityManager().createQuery(&laquo;SELECT DISTINCT card  FROM  catalog.Card card LEFT OUTER JOIN card.contributors contributor  WHERE contributor&#8230;.&raquo;) ;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/sidslog.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/sidslog.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=9&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2008/05/16/jbossql-manytoone-outer-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
		<item>
		<title>richFaces tutorial</title>
		<link>http://sidslog.wordpress.com/2008/03/02/richfcaes-tutorial/</link>
		<comments>http://sidslog.wordpress.com/2008/03/02/richfcaes-tutorial/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 18:26:43 +0000</pubDate>
		<dc:creator>sidslog</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[richfaces]]></category>

		<guid isPermaLink="false">http://sidslog.wordpress.com/?p=3</guid>
		<description><![CDATA[http://labs.jboss.com/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/index.html
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=3&subd=sidslog&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>http://labs.jboss.com/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/index.html</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/sidslog.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/sidslog.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sidslog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sidslog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sidslog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sidslog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sidslog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sidslog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sidslog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sidslog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sidslog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sidslog.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sidslog.wordpress.com&blog=3036223&post=3&subd=sidslog&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://sidslog.wordpress.com/2008/03/02/richfcaes-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f9a7ed301c1e0612c8e5751c7f24417e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sidslog</media:title>
		</media:content>
	</item>
	</channel>
</rss>