<?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/"
	>

<channel>
	<title>Java堂 &#187; DynamicLanguage</title>
	<atom:link href="http://www.javatang.com/archives/category/dynamiclanguage/feed" rel="self" type="application/rss+xml" />
	<link>http://www.javatang.com</link>
	<description>Java Tang</description>
	<lastBuildDate>Thu, 08 Dec 2011 08:29:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ext中设置Ajax超时时间</title>
		<link>http://www.javatang.com/archives/2011/10/18/1847563.html</link>
		<comments>http://www.javatang.com/archives/2011/10/18/1847563.html#comments</comments>
		<pubDate>Tue, 18 Oct 2011 12:18:47 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=563</guid>
		<description><![CDATA[在Ext中无论是在Grid、Combox中使用Store加载数据，还是直接使用Ajax发送请求，其超时时间均可以统一使用如下代码进行设置： // 超时时间，单位毫秒 Ext.Ajax.timeout = 5 * 60 * 1000; 注意，单位是毫秒。 不过以前不知道是因为在哪里搜索的结果，还是Ext 2.x版本中的问题，使用了Ext.lib.Ajax.timeout = 5 * 60 * 1000;的方式进行设置，但是这种方式是无效的。 Ext的版本是3.2.1. Related Posts:Apache和Resin组合时间歇性出现503错误的解决方法DWR文档之DWR总览Discuz!一次误删会员用户组的恢复最流行的 Ajax/Java 框架DWR文档之 网络上的资料]]></description>
			<content:encoded><![CDATA[<p>在Ext中无论是在Grid、Combox中使用Store加载数据，还是直接使用Ajax发送请求，其超时时间均可以统一使用如下代码进行设置：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">// 超时时间，单位毫秒</span></li>
<li><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">Ajax</span><span style="color: Gray;">.</span><span style="color: Blue;">timeout</span><span style="color: Gray;"> = </span><span style="color: Maroon;">5</span><span style="color: Gray;"> * </span><span style="color: Maroon;">60</span><span style="color: Gray;"> * </span><span style="color: Maroon;">1000</span><span style="color: Gray;">;</span></li></ol></div>
<p>注意，单位是毫秒。</p>
<p>不过以前不知道是因为在哪里搜索的结果，还是Ext 2.x版本中的问题，使用了Ext.lib.Ajax.timeout = 5 * 60 * 1000;的方式进行设置，但是这种方式是无效的。</p>
<p>Ext的版本是3.2.1.</p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2010/11/13/1228487.html" rel="bookmark" class="crp_title">Apache和Resin组合时间歇性出现503错误的解决方法</a></li><li><a href="http://www.javatang.com/archives/2006/10/19/301977.html" rel="bookmark" class="crp_title">DWR文档之DWR总览</a></li><li><a href="http://www.javatang.com/archives/2008/03/13/5500263.html" rel="bookmark" class="crp_title">Discuz!一次误删会员用户组的恢复</a></li><li><a href="http://www.javatang.com/archives/2006/10/20/230978.html" rel="bookmark" class="crp_title">最流行的 Ajax/Java 框架</a></li><li><a href="http://www.javatang.com/archives/2006/10/24/424782.html" rel="bookmark" class="crp_title">DWR文档之 网络上的资料</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2011/10/18/1847563.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE6下使png透明的完美解决方式（续）</title>
		<link>http://www.javatang.com/archives/2010/07/19/1736428.html</link>
		<comments>http://www.javatang.com/archives/2010/07/19/1736428.html#comments</comments>
		<pubDate>Mon, 19 Jul 2010 09:17:36 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=428</guid>
		<description><![CDATA[自从上次介绍一种在IE6下使png透明的方式之后，今天又遇到一种更加完美的解决方案 DD_belatedPNG，详细的使用方法大家可以看文档，我这里只是简单说一下如何来使用（其实使用的时候也非常简单）： 首先是在DD_belatedPNG网站上下载js文件，可以选择压缩后的文件，然后按照下面的方式在页面中引用（这一点和unitpngfix调用方式一样）： &#60;!--[if lt IE 7]&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;scripts/DD_belatedPNG.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34;&#62; // 设定需要渲染的DOM对象 DD_belatedPNG.fix('.png_bg'); &#60;/script&#62; &#60;![endif]--&#62; 接下来就是体现DD_belatedPNG灵活性的一面了，与UnitPNG不同，DD_belatedPNG需要你使用一个js脚本来指定所要渲染的页面对象，其选择方式与CSS中选择器的方式相同。像上面的例子就是选择页面中所有class为png_bg的DOM对象。 另外，为了做一个统一的设置，我的做法是直接在DD_belatedPNG.js文件后面加上DD_belatedPNG.fix(&#8216;.png_bg&#8217;);，这样只要在页面中设定DOM对象的class为png_bg就可以了，这一点可以做到与UnitPNG相同，只不过UnitPNG的名称是固定的，而DD_belatedPNG可以随心所欲了。 参考资料： DD_belatedPNG，最佳IE6环境下实现PNG-24的应用方案 Related Posts:Javascript的国际化方案使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法Javascript怎样设置文本框的readonly属性？优秀的JavaScript类库 &#8211; RicoIE6下使png透明的完美解决方式]]></description>
			<content:encoded><![CDATA[<p>自从上次介绍一种<a href="http://www.javatang.com/archives/2010/07/08/4615417.html" target="_blank">在IE6下使png透明的方式</a>之后，今天又遇到一种更加完美的解决方案 <a href="http://dillerdesign.com/experiment/DD_belatedPNG/" target="_blank">DD_belatedPNG</a>，详细的使用方法大家可以看文档，我这里只是简单说一下如何来使用（其实使用的时候也非常简单）：</p>
<p>首先是在DD_belatedPNG网站上<a href="http://dillerdesign.com/experiment/DD_belatedPNG/#download" target="_blank">下载</a>js文件，可以选择压缩后的文件，然后按照下面的方式在页面中引用（这一点和unitpngfix调用方式一样）：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">&lt;!--[if lt IE 7]&gt; </span></li>
<li><span style="color: #ffa500;">&lt;script type=&quot;text/javascript&quot; src=&quot;scripts/DD_belatedPNG.js&quot;&gt;&lt;/script&gt; </span></li>
<li><span style="color: #ffa500;">&lt;script type=&quot;text/javascript&quot;&gt;</span></li>
<li><span style="color: #ffa500;">// 设定需要渲染的DOM对象</span></li>
<li><span style="color: #ffa500;">DD_belatedPNG.fix('.png_bg');</span></li>
<li><span style="color: #ffa500;">&lt;/script&gt;</span></li>
<li><span style="color: #ffa500;">&lt;![endif]--&gt;</span></li></ol></div>
<p>接下来就是体现DD_belatedPNG灵活性的一面了，与UnitPNG不同，DD_belatedPNG需要你使用一个js脚本来指定所要渲染的页面对象，其选择方式与CSS中选择器的方式相同。像上面的例子就是选择页面中所有class为png_bg的DOM对象。</p>
<p>另外，为了做一个统一的设置，我的做法是直接在DD_belatedPNG.js文件后面加上DD_belatedPNG.fix(&#8216;.png_bg&#8217;);，这样只要在页面中设定DOM对象的class为png_bg就可以了，这一点可以做到与UnitPNG相同，只不过UnitPNG的名称是固定的，而DD_belatedPNG可以随心所欲了。</p>
<p>参考资料：<br />
<a href="http://www.osmn00.com/?p=419" target="_blank">DD_belatedPNG，最佳IE6环境下实现PNG-24的应用方案</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2008/04/20/5034268.html" rel="bookmark" class="crp_title">Javascript的国际化方案</a></li><li><a href="http://www.javatang.com/archives/2008/07/10/1954272.html" rel="bookmark" class="crp_title">使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法</a></li><li><a href="http://www.javatang.com/archives/2007/10/06/5104204.html" rel="bookmark" class="crp_title">Javascript怎样设置文本框的readonly属性？</a></li><li><a href="http://www.javatang.com/archives/2006/03/16/440510.html" rel="bookmark" class="crp_title">优秀的JavaScript类库 &#8211; Rico</a></li><li><a href="http://www.javatang.com/archives/2010/07/08/4615417.html" rel="bookmark" class="crp_title">IE6下使png透明的完美解决方式</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/07/19/1736428.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJS中调用focus方法无效的解决方法</title>
		<link>http://www.javatang.com/archives/2010/07/08/4916413.html</link>
		<comments>http://www.javatang.com/archives/2010/07/08/4916413.html#comments</comments>
		<pubDate>Thu, 08 Jul 2010 02:49:16 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=413</guid>
		<description><![CDATA[在ExtJS中用于盒型控件的BoxComponent（TextField、TextArea、CheckBox、ComboBox等的父类）提供了一个focus方法，用于控制光标的焦点。但是在调用该方法的时候往往会发现达不到预期的效果，很多时候根本没有办法来控制光标的焦点。 在BoxComponent文档中对focus方法的说明如下： focus( [Boolean selectText], [Boolean/Number delay] ) : Ext.Component Try to focus this component. 可以看到这个方法有两个可选的参数，第一个的含义是是否全选中所在的文本内容（默认为false），第二个是设置一个延迟的时间，单位是毫秒（默认为0，不延迟）。下面是两种调用的方法： var textField = new Ext.form.TextField({ // 属性就省略了 .... }); // 默认的调用 textField.focus(); // 设置延迟的调用 textField.focus(false, 100); // 等同于上面的方式 textField.focus.defer(100, textField); 如果做一个测试的话可以发现使用后面两种方式之后就会达到预期的效果了，这是因为所有的可视控件需要一个渲染的时间的，如果不设置focus的延迟时间，则再调用focus方法的时候该控件还没有渲染完成，当时是不会成功了。 参考资料：关于window的中field的focus问题 Related Posts:ExtJS中TextField或TextArea支持按键事件的条件PHP常见问题及解答Ext中设置Ajax超时时间用js检测是否安装指定插件的函数密码保护：JDBC操作SQL Server小结]]></description>
			<content:encoded><![CDATA[<p>在ExtJS中用于盒型控件的BoxComponent（TextField、TextArea、CheckBox、ComboBox等的父类）提供了一个focus方法，用于控制光标的焦点。但是在调用该方法的时候往往会发现达不到预期的效果，很多时候根本没有办法来控制光标的焦点。</p>
<p>在BoxComponent文档中对focus方法的说明如下：</p>
<blockquote><p>
focus( [Boolean selectText], [Boolean/Number delay] ) : Ext.Component<br />
Try to focus this component.
</p></blockquote>
<p>可以看到这个方法有两个可选的参数，第一个的含义是是否全选中所在的文本内容（默认为false），第二个是设置一个延迟的时间，单位是毫秒（默认为0，不延迟）。下面是两种调用的方法：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">textField</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">form</span><span style="color: Gray;">.</span><span style="color: Blue;">TextField</span><span style="color: Olive;">({</span></li>
<li><span style="color: #ffa500;">// 属性就省略了 .... </span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">// 默认的调用</span></li>
<li><span style="color: Blue;">textField</span><span style="color: Gray;">.</span><span style="color: Blue;">focus</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">// 设置延迟的调用</span></li>
<li><span style="color: Blue;">textField</span><span style="color: Gray;">.</span><span style="color: Blue;">focus</span><span style="color: Olive;">(</span><span style="color: Green;">false</span><span style="color: Gray;">, </span><span style="color: Maroon;">100</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">// 等同于上面的方式</span></li>
<li><span style="color: Blue;">textField</span><span style="color: Gray;">.</span><span style="color: Blue;">focus</span><span style="color: Gray;">.</span><span style="color: Blue;">defer</span><span style="color: Olive;">(</span><span style="color: Maroon;">100</span><span style="color: Gray;">, </span><span style="color: Blue;">textField</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li></ol></div>
<p>如果做一个测试的话可以发现使用后面两种方式之后就会达到预期的效果了，这是因为所有的可视控件需要一个渲染的时间的，如果不设置focus的延迟时间，则再调用focus方法的时候该控件还没有渲染完成，当时是不会成功了。</p>
<p>参考资料：<a href="http://www.javaeye.com/topic/157650" target="_blank">关于window的中field的focus问题</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2010/07/07/5638409.html" rel="bookmark" class="crp_title">ExtJS中TextField或TextArea支持按键事件的条件</a></li><li><a href="http://www.javatang.com/archives/2007/06/08/5540166.html" rel="bookmark" class="crp_title">PHP常见问题及解答</a></li><li><a href="http://www.javatang.com/archives/2011/10/18/1847563.html" rel="bookmark" class="crp_title">Ext中设置Ajax超时时间</a></li><li><a href="http://www.javatang.com/archives/2007/10/28/2751231.html" rel="bookmark" class="crp_title">用js检测是否安装指定插件的函数</a></li><li><a href="http://www.javatang.com/archives/2006/05/03/061828.html" rel="bookmark" class="crp_title">密码保护：JDBC操作SQL Server小结</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/07/08/4916413.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJS中TextField或TextArea支持按键事件的条件</title>
		<link>http://www.javatang.com/archives/2010/07/07/5638409.html</link>
		<comments>http://www.javatang.com/archives/2010/07/07/5638409.html#comments</comments>
		<pubDate>Wed, 07 Jul 2010 03:56:38 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=409</guid>
		<description><![CDATA[在ExtJS中，对事件进行捕获有两种方式：一种是设置listeners属性，另外一种就是使用on方法，代码如下： var textArea = new Ext.form.TextArea({ &#160; listeners: { &#160; &#160; 'keyup': { &#160; &#160; &#160; fn: function(o, evt)&#160;{}, &#160; &#160; &#160; scope: this &#160; &#160; } &#160; } }); &#160; // 也可以使用on方法 textArea.on('keypress', function(o, evt), this); 但是如果这样的话还是无法捕获按键事件，原来除了增加监听之外，还要设置一个enableKeyEvents属性，该属性的作用是是否处理按键事件，默认是false。 参考资料： 不显示删除回复显示所有回复显示星级回复显示得分回复 Extjs中textarea不支持keyup事件？ Related Posts:ExtJS中调用focus方法无效的解决方法IE6中出现“无法设置selected属性”的bug及解决方法遍历JavaScript对象的所有属性Javascript的国际化方案用js检测是否安装指定插件的函数]]></description>
			<content:encoded><![CDATA[<p>在ExtJS中，对事件进行捕获有两种方式：一种是设置listeners属性，另外一种就是使用on方法，代码如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">textArea</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">form</span><span style="color: Gray;">.</span><span style="color: Blue;">TextArea</span><span style="color: Olive;">({</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">listeners</span><span style="color: Gray;">: </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">'</span><span style="color: Red;">keyup</span><span style="color: #8b0000;">'</span><span style="color: Gray;">: </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">fn</span><span style="color: Gray;">: </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">o</span><span style="color: Gray;">, </span><span style="color: Blue;">evt</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">scope</span><span style="color: Gray;">: </span><span style="color: Green;">this</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// 也可以使用on方法</span></li>
<li><span style="color: Blue;">textArea</span><span style="color: Gray;">.</span><span style="color: Blue;">on</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">keypress</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">o</span><span style="color: Gray;">, </span><span style="color: Blue;">evt</span><span style="color: Olive;">)</span><span style="color: Gray;">, </span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li></ol></div>
<p>但是如果这样的话还是无法捕获按键事件，原来除了增加监听之外，还要设置一个enableKeyEvents属性，该属性的作用是是否处理按键事件，默认是false。</p>
<p>参考资料： <a href="http://topic.csdn.net/u/20090703/09/c51c8fdd-5e77-4a6f-98b0-9dec6b957fd0.html" target="_blank">不显示删除回复显示所有回复显示星级回复显示得分回复 Extjs中textarea不支持keyup事件？</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2010/07/08/4916413.html" rel="bookmark" class="crp_title">ExtJS中调用focus方法无效的解决方法</a></li><li><a href="http://www.javatang.com/archives/2008/10/19/0704277.html" rel="bookmark" class="crp_title">IE6中出现“无法设置selected属性”的bug及解决方法</a></li><li><a href="http://www.javatang.com/archives/2006/09/13/442864.html" rel="bookmark" class="crp_title">遍历JavaScript对象的所有属性</a></li><li><a href="http://www.javatang.com/archives/2008/04/20/5034268.html" rel="bookmark" class="crp_title">Javascript的国际化方案</a></li><li><a href="http://www.javatang.com/archives/2007/10/28/2751231.html" rel="bookmark" class="crp_title">用js检测是否安装指定插件的函数</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/07/07/5638409.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJS hack: Add multiple toolbars to a Panel</title>
		<link>http://www.javatang.com/archives/2010/03/21/1529393.html</link>
		<comments>http://www.javatang.com/archives/2010/03/21/1529393.html#comments</comments>
		<pubDate>Sun, 21 Mar 2010 02:15:29 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://www.javatang.com/?p=393</guid>
		<description><![CDATA[在ExtJS中实现多行工具栏的效果 hack code: /** * ExtJS hack: Add multiple toolbars to a Panel * * @author Jet Ma (jetmah(at)gmail(dot)com) */ // 将原来的onRender方法进行重定义，以免造成递归调用！ // rename the original onRender method to avoid call itself Ext.Panel.prototype.originalonRender = Ext.Panel.prototype.onRender; // 扩展onRender方法，实现在Toolbar中增加多行 // override onRender method Ext.Panel.prototype.onRender = function(ct, position)&#160;{ &#160; &#160; this.originalonRender(ct, position); &#160; &#160; &#160; &#160; // 增加使用rowtbar添加换行的Toolbar [...]]]></description>
			<content:encoded><![CDATA[<h1 style="font-size: 14px">在ExtJS中实现多行工具栏的效果</h1>
<p>hack code:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;"> * ExtJS hack: Add multiple toolbars to a Panel</span></li>
<li><span style="color: #ffa500;"> * </span></li>
<li><span style="color: #ffa500;"> * @author Jet Ma (jetmah(at)gmail(dot)com)</span></li>
<li><span style="color: #ffa500;"> */</span></li>
<li><span style="color: #ffa500;">// 将原来的onRender方法进行重定义，以免造成递归调用！</span></li>
<li><span style="color: #ffa500;">// rename the original onRender method to avoid call itself</span></li>
<li><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">Panel</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;">.</span><span style="color: Blue;">originalonRender</span><span style="color: Gray;"> = </span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">Panel</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;">.</span><span style="color: Blue;">onRender</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">// 扩展onRender方法，实现在Toolbar中增加多行</span></li>
<li><span style="color: #ffa500;">// override onRender method</span></li>
<li><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">Panel</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;">.</span><span style="color: Blue;">onRender</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">ct</span><span style="color: Gray;">, </span><span style="color: Blue;">position</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">originalonRender</span><span style="color: Olive;">(</span><span style="color: Blue;">ct</span><span style="color: Gray;">, </span><span style="color: Blue;">position</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// 增加使用rowtbar添加换行的Toolbar</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// use the custom rowtbar argument to add it to this TopToolbar</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">tbar</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">rowtbar</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">rowtbar</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">rowtbar</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">isArray</span><span style="color: Olive;">(</span><span style="color: Blue;">rowtbar</span><span style="color: Olive;">))</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">rowtbar</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> ++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">Toolbar</span><span style="color: Olive;">(</span><span style="color: Blue;">rowtbar</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">.</span><span style="color: Blue;">render</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">tbar</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// 增加使用rowbbar添加换行的Bottombar</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// use the custom rowbbar argument to add it to this BottomToolbar</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">bbar</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">rowbbar</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">rowbbar</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">rowbbar</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">isArray</span><span style="color: Olive;">(</span><span style="color: Blue;">rowbbar</span><span style="color: Olive;">))</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">rowbbar</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> ++</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">Toolbar</span><span style="color: Olive;">(</span><span style="color: Blue;">rowbbar</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">.</span><span style="color: Blue;">render</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">bbar</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>usage:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">panel</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Ext</span><span style="color: Gray;">.</span><span style="color: Blue;">Panel</span><span style="color: Olive;">({</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//...&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">tbar</span><span style="color: Gray;">: </span><span style="color: Olive;">[{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">button one</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}</span><span style="color: Gray;">, </span><span style="color: Olive;">{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">button two</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}]</span><span style="color: Gray;">,&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">rowtbar</span><span style="color: Gray;">: </span><span style="color: Olive;">[</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">[{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row1 buttone 1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}</span><span style="color: Gray;">, </span><span style="color: Olive;">{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row1 button2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}]</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp;&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">[{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row2 buttone 1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}</span><span style="color: Gray;">, </span><span style="color: Olive;">{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row2 button2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}]</span><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">]</span><span style="color: Gray;">,&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">bbar</span><span style="color: Gray;">:&nbsp; </span><span style="color: Olive;">[{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">button one</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}</span><span style="color: Gray;">, </span><span style="color: Olive;">{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">button two</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}]</span><span style="color: Gray;">,&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">rowbbar</span><span style="color: Gray;">: </span><span style="color: Olive;">[</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">[{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row1 buttone 1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}</span><span style="color: Gray;">, </span><span style="color: Olive;">{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row1 button2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}]</span><span style="color: Gray;">,&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">[{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row2 buttone 1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}</span><span style="color: Gray;">, </span><span style="color: Olive;">{</span><span style="color: Blue;">text</span><span style="color: Gray;">: </span><span style="color: #8b0000;">'</span><span style="color: Red;">row2 button2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">}]</span><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">]</span></li>
<li><span style="color: Olive;">})</span><span style="color: Gray;">;</span></li></ol></div>
<p>screenshot:<br />
<img src="http://www.javatang.com/wp-content/mutil-toolbar.png" alt="" title="mutil-toolbar" width="266" height="262" class="alignnone size-full wp-image-396" /></p>
<p>more discussion: <a href="http://www.extjs.com/forum/showthread.php?t=94762" target="_blank">http://www.extjs.com/forum/showthread.php?t=94762</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2008/04/20/5034268.html" rel="bookmark" class="crp_title">Javascript的国际化方案</a></li><li><a href="http://www.javatang.com/archives/2006/03/16/440510.html" rel="bookmark" class="crp_title">优秀的JavaScript类库 &#8211; Rico</a></li><li><a href="http://www.javatang.com/archives/2010/12/01/2805477.html" rel="bookmark" class="crp_title">Apache2.x中设置gzip</a></li><li><a href="http://www.javatang.com/archives/2007/10/06/5104204.html" rel="bookmark" class="crp_title">Javascript怎样设置文本框的readonly属性？</a></li><li><a href="http://www.javatang.com/archives/2008/07/10/1954272.html" rel="bookmark" class="crp_title">使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2010/03/21/1529393.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法</title>
		<link>http://www.javatang.com/archives/2008/07/10/1954272.html</link>
		<comments>http://www.javatang.com/archives/2008/07/10/1954272.html#comments</comments>
		<pubDate>Thu, 10 Jul 2008 08:19:54 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[JavaPlateform]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[dwr]]></category>

		<guid isPermaLink="false">http://www.javatang.com/archives/2008/07/10/1954272.html</guid>
		<description><![CDATA[DWR提供了两个js文件：engine.js和util.js，通常来说我们都是动态来引用这两个js文件，在官方的例子中也是这样做的（其中dwr是mapping时的路径）： &#60;script type=&#34;text/javascript&#34; src=&#34;/dwr/engine.js&#34;&#62;&#60;/script&#62; &#60;script&#160;type=&#34;text/javascript&#34; src=&#34;/dwr/util.js&#34;&#62;&#60;/script&#62; 但是根据页面优化原则，我们如果将所有的js文件进行压缩整合在一起的话将会极大的减少页面加载的时间。但是当我们将上面的两个js文件下载下来然后跟其他js文件整合压缩之后，访问页面的时候会出现一个“例外被抛出且未被接住”的脚本错误。 用百度搜索了一下基本只搜到一篇名为《dwr应用时请注意（初学者）》的文章，文章中建议使用他在附件中所提供的dwr.jar包。但是作者所提供的dwr版本有些低，另外作者并没有在文章中说明造成问题的原因。 后来将异常转换为英文 Exception thrown and not caught 在google中搜索了一下，得知是因为没有在页面中动态引用engine.js，因为dwr在运行的时候需要动态控制这个文件。 但是这样的话就达不到压缩engine.js文件的目的了，我无意中在官方看到一篇专门讲解怎样缓存engine.js文件的文章，下面我就将作者建议的做法说明如下： 首先使用动态加载engine.js文件，然后将该文件下载下来。打开下载下来的engine.js文件，然后将第226到242行之间的文字剪切下来，然后将dwr.jar包中的org/directwebremoting/engine.js文件内容删除，然后粘贴到该文件中并替换dwr.jar包中原来的engine.js文件，内容大致如下： dwr.engine._origScriptSessionId = &#34;${scriptSessionId}&#34;; dwr.engine._sessionCookieName = &#34;${sessionCookieName}&#34;; dwr.engine._allowGetForSafariButMakeForgeryEasier = &#34;${allowGetForSafariButMakeForgeryEasier}&#34;; dwr.engine._scriptTagProtection = &#34;${scriptTagProtection}&#34;; dwr.engine._defaultPath = &#34;${defaultPath}&#34;; dwr.engine._pollWithXhr = &#34;${pollWithXhr}&#34;; 这样就可以将下载下来的engin.js文件同其他文件进行压缩合并了，但是在页面中还必须动态引用engine.js： &#60;script type=&#34;text/javascript&#34; src=&#34;/dwr/engine.js&#34;&#62;&#60;/script&#62; 这样一来即压缩了engine.js文件中静态的部分，又使用了engine.js中的动态部分，并且最重要的是“例外被抛出且未被接住”异常也不会再出现了。 参考资料： Caching engine.js Related Posts:Javascript的国际化方案IE6下使png透明的完美解决方式（续）Javascript怎样设置文本框的readonly属性？优秀的JavaScript类库 &#8211; RicoApache中显示PHP源代码的原因]]></description>
			<content:encoded><![CDATA[<p>DWR提供了两个js文件：engine.js和util.js，通常来说我们都是动态来引用这两个js文件，在官方的例子中也是这样做的（其中dwr是mapping时的路径）：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/dwr/engine.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/dwr/util.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>但是根据页面优化原则，我们如果将所有的<a href="http://www.javatang.com/archives/2008/04/13/0212267.html" target="_blank">js文件进行压缩整合在一起</a>的话将会极大的减少页面加载的时间。但是当我们将上面的两个js文件下载下来然后跟其他js文件整合压缩之后，访问页面的时候会出现一个“例外被抛出且未被接住”的脚本错误。</p>
<p>用百度搜索了一下基本只搜到一篇名为<a href="http://yahaitt.javaeye.com/blog/147795" target="_blank">《dwr应用时请注意（初学者）》</a>的文章，文章中建议使用他在附件中所提供的dwr.jar包。但是作者所提供的dwr版本有些低，另外作者并没有在文章中说明造成问题的原因。</p>
<p>后来将异常转换为英文 Exception thrown and not caught 在google中搜索了一下，得知是因为没有在页面中动态引用engine.js，因为dwr在运行的时候需要动态控制这个文件。</p>
<p>但是这样的话就达不到压缩engine.js文件的目的了，我无意中在官方看到一篇专门讲解<a href="http://directwebremoting.org/dwr/browser/engine/static" target="_blank">怎样缓存engine.js文件的文章</a>，下面我就将作者建议的做法说明如下：</p>
<p>首先使用动态加载engine.js文件，然后将该文件下载下来。打开下载下来的engine.js文件，然后将第226到242行之间的文字剪切下来，然后将dwr.jar包中的org/directwebremoting/engine.js文件内容删除，然后粘贴到该文件中并替换dwr.jar包中原来的engine.js文件，内容大致如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">dwr</span><span style="color: Gray;">.</span><span style="color: Blue;">engine</span><span style="color: Gray;">.</span><span style="color: Blue;">_origScriptSessionId</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${scriptSessionId}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">dwr</span><span style="color: Gray;">.</span><span style="color: Blue;">engine</span><span style="color: Gray;">.</span><span style="color: Blue;">_sessionCookieName</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${sessionCookieName}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">dwr</span><span style="color: Gray;">.</span><span style="color: Blue;">engine</span><span style="color: Gray;">.</span><span style="color: Blue;">_allowGetForSafariButMakeForgeryEasier</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${allowGetForSafariButMakeForgeryEasier}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">dwr</span><span style="color: Gray;">.</span><span style="color: Blue;">engine</span><span style="color: Gray;">.</span><span style="color: Blue;">_scriptTagProtection</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${scriptTagProtection}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">dwr</span><span style="color: Gray;">.</span><span style="color: Blue;">engine</span><span style="color: Gray;">.</span><span style="color: Blue;">_defaultPath</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${defaultPath}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">dwr</span><span style="color: Gray;">.</span><span style="color: Blue;">engine</span><span style="color: Gray;">.</span><span style="color: Blue;">_pollWithXhr</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${pollWithXhr}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li></ol></div>
<p>这样就可以将下载下来的engin.js文件同其他文件进行压缩合并了，但是在页面中还必须动态引用engine.js：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">/dwr/engine.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>这样一来即压缩了engine.js文件中静态的部分，又使用了engine.js中的动态部分，并且最重要的是“例外被抛出且未被接住”异常也不会再出现了。</p>
<p>参考资料：<br />
<a href="http://directwebremoting.org/dwr/browser/engine/static" target="_blank">Caching engine.js</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2008/04/20/5034268.html" rel="bookmark" class="crp_title">Javascript的国际化方案</a></li><li><a href="http://www.javatang.com/archives/2010/07/19/1736428.html" rel="bookmark" class="crp_title">IE6下使png透明的完美解决方式（续）</a></li><li><a href="http://www.javatang.com/archives/2007/10/06/5104204.html" rel="bookmark" class="crp_title">Javascript怎样设置文本框的readonly属性？</a></li><li><a href="http://www.javatang.com/archives/2006/03/16/440510.html" rel="bookmark" class="crp_title">优秀的JavaScript类库 &#8211; Rico</a></li><li><a href="http://www.javatang.com/archives/2007/10/05/5331208.html" rel="bookmark" class="crp_title">Apache中显示PHP源代码的原因</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2008/07/10/1954272.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>如何使用DWR2.0的注解功能</title>
		<link>http://www.javatang.com/archives/2008/07/07/5648271.html</link>
		<comments>http://www.javatang.com/archives/2008/07/07/5648271.html#comments</comments>
		<pubDate>Mon, 07 Jul 2008 08:56:48 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[JavaPlateform]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[dwr]]></category>

		<guid isPermaLink="false">http://www.javatang.com/archives/2008/07/07/5648271.html</guid>
		<description><![CDATA[DWR2.0新增加了JDK5的注解(Annotation)功能，使用注解功能之后可以从很大程度上简化了原来的dwr.xml的配置，使用起来非常的方便。 一、配置DWR使用注解功能 如果让dwr使用注解功能需要在web.xml进行如下配置： &#60;servlet&#62; &#160; &#160; &#160; &#160; &#60;servlet-name&#62;dwr-invoker&#60;/servlet-name&#62; &#160; &#160; &#160; &#160; &#60;servlet-class&#62;org.directwebremoting.servlet.DwrServlet&#60;/servlet-class&#62; &#160; &#160; &#160; &#160; &#60;init-param&#62; &#160; &#160; &#160; &#160; &#160; &#160; &#60;param-name&#62;debug&#60;/param-name&#62; &#160; &#160; &#160; &#160; &#160; &#160; &#60;param-value&#62;true&#60;/param-value&#62; &#160; &#160; &#160; &#160; &#60;/init-param&#62; &#160; &#160; &#160; &#160; &#60;!-- 将设定注解的域对象和业务实现类放在下面列表中，中间使用逗号间隔 --&#62; &#160; &#160; &#160; &#160; &#60;init-param&#62; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>DWR2.0新增加了JDK5的注解(Annotation)功能，使用注解功能之后可以从很大程度上简化了原来的dwr.xml的配置，使用起来非常的方便。</p>
<p>一、配置DWR使用注解功能</p>
<p>如果让dwr使用注解功能需要在web.xml进行如下配置：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">servlet</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">servlet-name</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">dwr-invoker</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">servlet-name</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">servlet-class</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">org.directwebremoting.servlet.DwrServlet</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">servlet-class</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">init-param</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">param-name</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">debug</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">param-name</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">param-value</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">true</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">param-value</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">init-param</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">&lt;!-- 将设定注解的域对象和业务实现类放在下面列表中，中间使用逗号间隔 --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">init-param</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">param-name</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">classes</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">param-name</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">param-value</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; com.javatang.domain.Book,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; com.javatang.bank.Bank,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; com.javatang.dao.BookDao</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">param-value</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">init-param</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">servlet</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">servlet-mapping</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">servlet-name</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">dwr-invoker</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">servlet-name</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">url-pattern</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">/scripts/ajax/*</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">url-pattern</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">servlet-mapping</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>这样设置之后就可以在dwr中使用注解了，非常的方便。</p>
<p>二、DWR提供的注解类型<br />
经常用到的注解主要有：@RemoteProxy、@RemoteMethod、@DataTransferObject和@RemoteProperty。</p>
<p>1. @RemoteProxy和@RemoteMethod<br />
@RemoteMethod对应于原来dwr.xml文件中的create标签，用于创建DWR所提供的远程方法；而@RemoteMethod对应于create标签中的 &lt;include method=”"/>，用来指定所要暴露的方法名称。我们举例来说明：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">@</span><span style="color: Blue;">RemoteProxy</span><span style="color: Olive;">(</span><span style="color: Blue;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bankFunctions</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">Bank</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; @</span><span style="color: Blue;">RemoteMethod</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">buy</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// ...</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>从上面可以看出，@RemoteProxy表示这个类将用于远程方法，而使用@RemoteMethod指定所要暴露的方法，没有使用@RemoteMethod的方法将不会显示在客户端。<br />
上面的注释使用dwr.xml表示如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: #00008b;">DOCTYPE</span><span style="color: Gray;"> </span><span style="color: #00008b;">dwr</span><span style="color: Gray;"> </span><span style="color: #00008b;">PUBLIC</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://getahead.ltd.uk/dwr/dwr20.dtd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">dwr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">allow</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">create</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">creator</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">new</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">javascript</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bankFunctions</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">include</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">method</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">buy</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">create</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">allow</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">dwr</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>如果使用Spring中的DAO活逻辑层则需要进行如下的设置：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">// BookDao</span></li>
<li><span style="color: Gray;">@</span><span style="color: Blue;">RemoteProxy</span><span style="color: Olive;">(</span><span style="color: Blue;">creator</span><span style="color: Gray;"> = </span><span style="color: Blue;">SpringCreator</span><span style="color: Gray;">.</span><span style="color: Green;">class</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">creatorParams</span><span style="color: Gray;"> = @</span><span style="color: Blue;">Param</span><span style="color: Olive;">(</span><span style="color: Blue;">name</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">beanName</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Blue;">value</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bookDao</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bookFunctions</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">BookDao</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; @</span><span style="color: Blue;">RemoteMethod</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">addBook</span><span style="color: Olive;">(</span><span style="color: Blue;">Book</span><span style="color: Gray;"> </span><span style="color: Blue;">book</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">// ...</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>通过指定@RemoteProxy中的creator类型为SpringCreator，然后在creatorParams指定对应的beanName名称。对应的dwr.xml文件如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: #00008b;">DOCTYPE</span><span style="color: Gray;"> </span><span style="color: #00008b;">dwr</span><span style="color: Gray;"> </span><span style="color: #00008b;">PUBLIC</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://getahead.ltd.uk/dwr/dwr20.dtd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">dwr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">allow</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">create</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">creator</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">spring</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">javascript</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bookFunctions</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">beanName</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bookDao</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">include</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">method</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">addBook</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">create</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">allow</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">dwr</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>2. @DataTransferObject和@RemoteProperty<br />
@DataTransferObject对应于原来dwr.xml文件中的convert标签，用于转换Java对象；@RemoteProperty则对应于convert标签中的 &lt;param name=”include” value=”" />。</p>
<p>举例说明一下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">@</span><span style="color: Blue;">DataTransferObject</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">Book</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; @</span><span style="color: Blue;">RemoteProperty</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">id</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; @</span><span style="color: Blue;">RemoteProperty</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">name</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Book</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">getId</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">id</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">setId</span><span style="color: Olive;">(</span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">id</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">id</span><span style="color: Gray;"> = </span><span style="color: Blue;">id</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">getName</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">name</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">setName</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">name</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">name</span><span style="color: Gray;"> = </span><span style="color: Blue;">name</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>@RemoteProperty可以放在JavaBean中的私有变量上面，也可以放在getXXX方法上面。另外如果想将JavaBean中所有的属性都暴露出来的话，不需要在任何属性上面添加@RemoteProperty注释就可以了。</p>
<p>上面的注释对应的dwr.xml文件如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: #00008b;">DOCTYPE</span><span style="color: Gray;"> </span><span style="color: #00008b;">dwr</span><span style="color: Gray;"> </span><span style="color: #00008b;">PUBLIC</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://getahead.ltd.uk/dwr/dwr20.dtd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">dwr</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">allow</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">convert</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">converter</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bean</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">match</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">com.javatang.domain.Book</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">param</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">include</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">id, name</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">convert</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">&lt;!-- 或者用下面的方式也可以</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;convert converter=&quot;bean&quot; match=&quot;com.javatang.domain.Book&quot; /&gt;</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &nbsp; &nbsp; --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">allow</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">dwr</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>关于具体每个注释使用的方法已经所包含的参数可以参考Java Doc。使用DWR2.0的注解极大的简化了原来dwr.xml的配置，非常的方便。</p>
<p>参考资料：<br />
<a href="http://directwebremoting.org/dwr/server/annotations" target="_blank">DWR Annotations</a><br />
<a href="http://www.matrix.org.cn/thread.shtml?topicId=9ebc11f7-329a-11dc-a189-fd356e54e2a4&#038;forumId=41&#038;fid=41" target="_blank">[原创]DWR Annotations and Spring</a><br />
<a href="http://www.cnblogs.com/kylindai/archive/2008/04/02/1135286.html?P_AVPASS=PHDGBITAVPASST" target="_blank">DWR Annotations 使用 SpringCreator</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2006/10/20/254879.html" rel="bookmark" class="crp_title">DWR文档之开始使用 DWR</a></li><li><a href="http://www.javatang.com/archives/2007/03/11/3030123.html" rel="bookmark" class="crp_title">DWR文档之dwr.xml</a></li><li><a href="http://www.javatang.com/archives/2008/06/19/0308269.html" rel="bookmark" class="crp_title">JPA和Hibernate注解的继承问题</a></li><li><a href="http://www.javatang.com/archives/2007/03/13/5026128.html" rel="bookmark" class="crp_title">按照指定的类型排序</a></li><li><a href="http://www.javatang.com/archives/2006/08/30/285461.html" rel="bookmark" class="crp_title">使用java.util.zip对字符串进行压缩和解压缩</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2008/07/07/5648271.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript的国际化方案</title>
		<link>http://www.javatang.com/archives/2008/04/20/5034268.html</link>
		<comments>http://www.javatang.com/archives/2008/04/20/5034268.html#comments</comments>
		<pubDate>Sun, 20 Apr 2008 06:50:34 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.javatang.com/archives/2008/04/20/5034268.html</guid>
		<description><![CDATA[目前Ajax框架是层出不穷，而且功能变得越来越强大，从而使得Web页面发展为现在的三层结构之说：HTML + CSS + Script。在使用Javascript的时候涉及到其中一个国际化的问题。 Javascript中没有像Java那样拥有国际化的方案，但是可以使用一些技巧来达到目的。首先将在脚本中用到的文字全部保存到每个语种的文件中，比如简体中文zh_CN.js、英文en.js等等，然后使用动态语言判断客户端浏览器或Cookies的语言来决定加载对应语种的js文件，这样就实现了国际化的效果。 但是对于保存文本的变量而言有不同的形式，可以每个文本指定一个变量，也可以将所有的变量保存到一个或几个数组中。我发现ExtJS框架是采用通过覆盖对应模块的类属性来实现不同模块中文本的多语种显示。下面我就举例来说明这种方式： /* base.js */ &#160; if&#160;(javatang== null) var javatang= {}; &#160; if&#160;(javatang.lang == null) javatang.lang = new function(){ &#160; &#160; this.sampleText= &#34;This is sample text&#34;; &#160; &#160; // 设置下面的属性 ... }; &#160; /* zh_CN.js */ this.sampleText = &#34;例子&#34;; 在HTML页面中调用方式如下： &#60;!doctype html public &#34;-//W3C//DTD XHTML 1.0 Strict//EN&#34; &#160; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#34;&#62; &#60;html&#160;xmlns=&#34;http://www.w3.org/1999/xhtml&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>目前Ajax框架是层出不穷，而且功能变得越来越强大，从而使得Web页面发展为现在的三层结构之说：HTML + CSS + Script。在使用Javascript的时候涉及到其中一个国际化的问题。</p>
<p>Javascript中没有像Java那样拥有国际化的方案，但是可以使用一些技巧来达到目的。首先将在脚本中用到的文字全部保存到每个语种的文件中，比如简体中文zh_CN.js、英文en.js等等，然后使用动态语言判断客户端浏览器或Cookies的语言来决定加载对应语种的js文件，这样就实现了国际化的效果。</p>
<p>但是对于保存文本的变量而言有不同的形式，可以每个文本指定一个变量，也可以将所有的变量保存到一个或几个数组中。我发现ExtJS框架是采用通过覆盖对应模块的类属性来实现不同模块中文本的多语种显示。下面我就举例来说明这种方式：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/* base.js */</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">javatang</span><span style="color: Gray;">== </span><span style="color: Green;">null</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">javatang</span><span style="color: Gray;">= </span><span style="color: Olive;">{}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">javatang</span><span style="color: Gray;">.</span><span style="color: Blue;">lang</span><span style="color: Gray;"> == </span><span style="color: Green;">null</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Blue;">javatang</span><span style="color: Gray;">.</span><span style="color: Blue;">lang</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">sampleText</span><span style="color: Gray;">= </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">This is sample text</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">// 设置下面的属性 ...</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">/* zh_CN.js */</span></li>
<li><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">sampleText</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">例子</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li></ol></div>
<p>在HTML页面中调用方式如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: #00008b;">doctype</span><span style="color: Gray;"> </span><span style="color: #00008b;">html</span><span style="color: Gray;"> </span><span style="color: #00008b;">public</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-//W3C//DTD XHTML 1.0 Strict//EN</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">html</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">xmlns</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.w3.org/1999/xhtml</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">xml:lang</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">gbk</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">head</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">meta</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">http-equiv</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">content-type</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">content</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/html; charset=gbk</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">title</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"> Title </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">title</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">base.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">zh_CN.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">// 下面开始在页面中调用</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">head</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">body</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">body</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">html</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>参考资料：<br />
<a href="http://www.xmlasp.net/n1849c17.aspx" target="_blank">了解JavaScript类</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2007/10/06/5104204.html" rel="bookmark" class="crp_title">Javascript怎样设置文本框的readonly属性？</a></li><li><a href="http://www.javatang.com/archives/2008/07/10/1954272.html" rel="bookmark" class="crp_title">使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法</a></li><li><a href="http://www.javatang.com/archives/2010/07/19/1736428.html" rel="bookmark" class="crp_title">IE6下使png透明的完美解决方式（续）</a></li><li><a href="http://www.javatang.com/archives/2006/03/16/440510.html" rel="bookmark" class="crp_title">优秀的JavaScript类库 &#8211; Rico</a></li><li><a href="http://www.javatang.com/archives/2010/07/08/4615417.html" rel="bookmark" class="crp_title">IE6下使png透明的完美解决方式</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2008/04/20/5034268.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>提高页面相应速度之压缩优化js和css文件</title>
		<link>http://www.javatang.com/archives/2008/04/13/0212267.html</link>
		<comments>http://www.javatang.com/archives/2008/04/13/0212267.html#comments</comments>
		<pubDate>Sun, 13 Apr 2008 17:02:12 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.javatang.com/archives/2008/04/13/0212267.html</guid>
		<description><![CDATA[Steve Souders在他的《High Performance Web Sites》一书中提出提高网页效率的14条准则，这些可以使用Yahoo! YSlow来进行一个比较形象的检测。 这里主要来说一下第一条准则：Make Fewer HTTP Requests，意思就是尽可能的减少HTTP请求。当时要达到这个目的有很多种方法，其中最重要的一点就是将CSS文件和Javascript文件分别进行压缩和合并，这样就在很大程度上减少了浏览器对服务器的HTTP请求此处，另外一旦被浏览器下载到本地可以对此进行缓存，从而提高了加载速度。 有关于这方面的工具最优秀且使用最为广泛的开源软件非YUI Compressor莫属了。但是YUICompressor只能使用命令行一个个对js或css文件进行压缩，现在我们就通过使用ant脚本来达到批量压缩合并多个文件的目的。 下面以压缩js文件为例进行说明。 首先做一个关于js文件编码规范的约定：所有的原始文件均为 .source.js，经过压缩处理后文件变为.js，将多个压缩后的文件合并后的文件名称为all-min.js。 接下来可以写下面的ant脚本： &#60;!-- 对YUICompressor的引用 --&#62; &#60;property&#160;name=&#34;js.dir&#34; value=&#34;${web.dir}/scripts&#34; /&#62; &#60;property&#160;name=&#34;js.release.name&#34; value=&#34;all-min.js&#34;/&#62; &#160; &#60;!-- 删除之前压缩合并过的文件 --&#62; &#60;delete&#62; &#160; &#160; &#60;fileset&#160;dir=&#34;${js.dir}&#34; includes=&#34;${js.release.name}&#34;/&#62; &#60;/delete&#62; &#160; &#160; &#160; &#160; &#60;!-- 执行 yuicompressor 压缩JS &#160;&#160; -- parallel=&#34;false&#34;：对fileset中的每个文件都执行一次executable参数的命令 &#160; -- dest 执行目录 &#160;&#160; --&#62; &#60;apply&#160;executable=&#34;java&#34; parallel=&#34;false&#34; verbose=&#34;true&#34; dest=&#34;${js.dir}&#34;&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oreillynet.com/pub/au/2951" target="_blank">Steve Souders</a>在他的<a href="http://www.oreilly.com/catalog/9780596529307/index.html" target="_blank">《High Performance Web Sites》</a>一书中提出提高网页效率的14条准则，这些可以使用Yahoo! <a href="http://developer.yahoo.com/yslow/" target="_blank">YSlow</a>来进行一个比较形象的检测。</p>
<p>这里主要来说一下第一条准则：Make Fewer HTTP Requests，意思就是尽可能的减少HTTP请求。当时要达到这个目的有很多种方法，其中最重要的一点就是将CSS文件和Javascript文件分别进行压缩和合并，这样就在很大程度上减少了浏览器对服务器的HTTP请求此处，另外一旦被浏览器下载到本地可以对此进行缓存，从而提高了加载速度。</p>
<p>有关于这方面的工具最优秀且使用最为广泛的开源软件非<a href="http://developer.yahoo.com/yui/compressor/" target="_blank">YUI Compressor</a>莫属了。但是YUICompressor只能使用命令行一个个对js或css文件进行压缩，现在我们就通过使用ant脚本来达到批量压缩合并多个文件的目的。</p>
<p>下面以压缩js文件为例进行说明。</p>
<p>首先做一个关于js文件编码规范的约定：所有的原始文件均为 <filename>.source.js，经过压缩处理后文件变为<filename>.js，将多个压缩后的文件合并后的文件名称为all-min.js。</p>
<p>接下来可以写下面的ant脚本：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">&lt;!-- 对YUICompressor的引用 --&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">property</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">js.dir</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${web.dir}/scripts</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">property</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">js.release.name</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">all-min.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">&lt;!-- 删除之前压缩合并过的文件 --&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">delete</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">fileset</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">dir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.dir}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">includes</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.release.name}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">delete</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: #ffa500;">&lt;!-- 执行 yuicompressor 压缩JS</span></li>
<li><span style="color: #ffa500;">&nbsp;&nbsp; -- parallel=&quot;false&quot;：对fileset中的每个文件都执行一次executable参数的命令</span></li>
<li><span style="color: #ffa500;">&nbsp; -- dest 执行目录</span></li>
<li><span style="color: #ffa500;">&nbsp;&nbsp; --&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">apply</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">executable</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">java</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">parallel</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">false</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">verbose</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">dest</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.dir}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">fileset</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">dir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.dir}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">include</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">**/*.source.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">fileset</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">arg</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">line</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-jar</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">arg</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">path</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${yuicompressor}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">&lt;!-- 设置待处理源文件及处理后输出文件的编码格式 --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">arg</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">line</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">--charset utf-8</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">srcfile</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">arg</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">line</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-o</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">&lt;!-- 指定文件命名规则 --&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">mapper</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">glob</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">from</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">*.source.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">to</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">*.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">targetfile</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">apply</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">&lt;!-- 合并文件 --&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">concat</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">destfile</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.dir}/${js.release.name}</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">fixlastline</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">true</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">fileset</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">dir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.dir}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">include</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">**/*.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">exclude</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.release.name}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">exclude</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">**/*.source.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">exclude</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">i18n/*.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">fileset</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">concat</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: #ffa500;">&lt;!-- 删除生成的临时文件 --&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">delete</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">fileset</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">dir</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.dir}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">include</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">**/*.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">exclude</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">${js.release.name}</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">exclude</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">**/*.source.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">exclude</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">i18n/*.js</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">fileset</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">delete</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>参考资料：<br />
<a href="http://www.julienlecomte.net/blog/2007/09/16/" target="_blank">Building Web Applications With Apache Ant</a><br />
<a href="http://blog.gomilko.com/2007/11/29/yui-compression-tool-as-ant-task/" target="_blank">YUI Compression tool as Ant Task</a><br />
<a href="http://blog.csdn.net/lvyuanfang/archive/2007/10/27/1849387.aspx" target="_blank">用yuicompressor和Ant压缩Ext的CSS文件</a><br />
<a href="http://www.aliued.cn/?p=453" target="_blank">用YSlow分析我们页面（完整版）</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2007/06/14/5433176.html" rel="bookmark" class="crp_title">Lucene创建索引时出现的segments或deletable拒绝访问异常的原因</a></li><li><a href="http://www.javatang.com/archives/2007/01/27/420290.html" rel="bookmark" class="crp_title">Eclipse中安装设置CDT</a></li><li><a href="http://www.javatang.com/archives/2006/04/12/140116.html" rel="bookmark" class="crp_title">理解Java中的字符编码</a></li><li><a href="http://www.javatang.com/archives/2010/11/11/2207480.html" rel="bookmark" class="crp_title">MySQL常用命令</a></li><li><a href="http://www.javatang.com/archives/2007/10/28/2751231.html" rel="bookmark" class="crp_title">用js检测是否安装指定插件的函数</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2008/04/13/0212267.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>两个PHP的Warning及解决方法</title>
		<link>http://www.javatang.com/archives/2007/11/11/5611239.html</link>
		<comments>http://www.javatang.com/archives/2007/11/11/5611239.html#comments</comments>
		<pubDate>Sun, 11 Nov 2007 17:56:11 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[DynamicLanguage]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.javatang.com/archives/2007/11/11/5611239.html</guid>
		<description><![CDATA[1. Cannot modify header information PHP Warning: Cannot modify header information &#8211; headers already sent by (output started at yourfiles) 这是因为设置的头文件信息溢出造成的。解决方法：将output_buffering 设为 on 就可以了 2. output handler &#8216;ob_gzhandler&#8217; conflicts with &#8216;zlib output compression&#8217; PHP Warning: ob_start() [ref.outcontrol]: output handler &#8216;ob_gzhandler&#8217; conflicts with &#8216;zlib output compression&#8217; in yourfiles 这是因为PHP中Zlib模块设置错误造成的，将zlib.output_compression这一行注释掉就可以了。这里需要指出的是PHP5自带GZIP模块的，不需要另外加载。 参考资料： 解决Warning: Cannot modify header information &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>1. <strong>Cannot modify header information</strong></p>
<blockquote><p>PHP Warning:  Cannot modify header information &#8211; headers already sent by (output started at <em>yourfiles</em>)</p></blockquote>
<p>这是因为设置的头文件信息溢出造成的。解决方法：将output_buffering 设为 on 就可以了</p>
<p>2. <strong>output handler &#8216;ob_gzhandler&#8217; conflicts with &#8216;zlib output compression&#8217;</strong></p>
<blockquote><p>PHP Warning:  ob_start() [<a href='ref.outcontrol'>ref.outcontrol</a>]: output handler &#8216;ob_gzhandler&#8217; conflicts with &#8216;zlib output compression&#8217; in <em>yourfiles</em></p></blockquote>
<p>这是因为PHP中Zlib模块设置错误造成的，将zlib.output_compression这一行注释掉就可以了。这里需要指出的是PHP5自带GZIP模块的，不需要另外加载。</p>
<p>参考资料：<br />
<a href="http://bbs.920546.com/read.php?tid=22774" target="_blank">解决Warning: Cannot modify header information &#8211; headers already sent by &#8230;&#8230;</a><br />
<a href="http://www.discuz.net/thread-623178-1-1.html" target="_blank">启用页面 Gzip 压缩后发生错误，请指点</a></p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2010/12/01/2805477.html" rel="bookmark" class="crp_title">Apache2.x中设置gzip</a></li><li><a href="http://www.javatang.com/archives/2006/03/13/49104.html" rel="bookmark" class="crp_title">修复WordPress进入后台缓慢的问题</a></li><li><a href="http://www.javatang.com/archives/2006/10/17/495674.html" rel="bookmark" class="crp_title">迟到的报道－ SQLServer2005 JDBC v1.1正式版发布</a></li><li><a href="http://www.javatang.com/archives/2007/06/10/3354167.html" rel="bookmark" class="crp_title">从PHP4升级到PHP5</a></li><li><a href="http://www.javatang.com/archives/2007/10/30/2016233.html" rel="bookmark" class="crp_title">C++基础之字符串处理函数</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2007/11/11/5611239.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.javatang.com @ 2012-02-06 02:39:29 -->
