<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>AJAX论坛最新讨论 - JavaEye</title>
    <description>JavaScript编程、XMLHTTP、AJAX开发、UI设计、Rich Client<br/>
圈子: 
<a href="http://flex2.group.javaeye.com/" target="_blank">Flex</a>
<a href="http://hzjavaeyer.group.javaeye.com/" target="_blank">JS研究</a>
<a href="http://css.group.javaeye.com/" target="_blank">CSS探讨</a>
<a href="http://ext.group.javaeye.com/" target="_blank">EXT</a>
<a href="http://gwts.group.javaeye.com/" target="_blank">GWT</a>
<a href="http://jsi.group.javaeye.com/" target="_blank">JSI</a> - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Ext Js 给window或panel加上热键</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javaExtjs.javaeye.com">chanball</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231170" style="color:red;">http://www.javaeye.com/topic/231170</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如题，代码如下:<br /><pre name="code" class="java">
var OverTimeForm = new Ext.form.FormPanel({
		bodyStyle: 'padding: 15px 0 0 10px;',
		defaultType: 'textfield',
		items:[{
			fieldLabel: '超时时间(小时/h)',
			name: 'overTime',
			xtype: 'numberfield'
		},{
			xtype: 'panel',
			border: false,
			html: '&lt;div style="color:red">设置终端刷卡后的有效时间!&lt;/div>'
		}],
		buttons:[{
			text: '确定',
			scope: this,
			handler: this.setOverTime
		},{
			text: '取消',
			scope: this,
			handler: this.cancleOverTime
		}],
//热键添加
		keys:[{
			key : Ext.EventObject.ENTER,
			fn : this.setOverTime,
			scope : this
		}]

	});
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/231170#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 14:25:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231170</link>
        <guid>http://www.javaeye.com/topic/231170</guid>
      </item>
      <item>
        <title>有人还记得这贴吗?&quot;分享一个35岁程序员的告别之作&quot;</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tinsn.javaeye.com">tinsn</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231391" style="color:red;">http://www.javaeye.com/topic/231391</a>&nbsp;
          发表时间: 2008年08月22日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          电脑被盗,所有的资料没了.<br />想找回一些资料.<br />但是这贴里面的代码已经下不了了.<br />http://www.javaeye.com/topic/157913<br /><br />有没有哪位兄台还有他的代码.
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/231391#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Aug 2008 01:19:40 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231391</link>
        <guid>http://www.javaeye.com/topic/231391</guid>
      </item>
      <item>
        <title>关于jquery内存回收问题请教</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhanjianhua.javaeye.com">zhanjianhua</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230695" style="color:red;">http://www.javaeye.com/topic/230695</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近用了一段时间的JQUERY,发现用JQUERY中的.append()方法动态生成数据时,内存不会回收,我不知道是不是我使用有问题, <br />还是JQUERY本身就带有这问题. <br />以下是我写的一个HTML, <br /><pre name="code" class="HTML">
最近用了一段时间的JQUERY,发现用JQUERY中的.append()方法动态生成数据时,内存不会回收,我不知道是不是我使用有问题, 
还是JQUERY本身就带有这问题. 
以下是我写的一个HTML, &lt;html>
&lt;head>
&lt;/head>
&lt;body>
&lt;table cellpadding="0" cellspacing="0">
&lt;tbody id="songList">
&lt;/tbody>
&lt;/table>
&lt;a href="#" onclick="getList()">点击装载数据
&lt;/body>
&lt;script type='text/javascript' src='jquery.js'>&lt;/script>
&lt;script type="text/javascript">
        $(document).ready(function(){
        	getList();
        })
        function getList() {
        	$("#songList").empty();
        	for(var i=0; i &lt; 10; i++) {
			var str='&lt;tr>'
		        	+'&lt;td class="input">'+ i +'&lt;/td>'
		                +'&lt;td class="gm">&lt;span>歌名歌名歌名歌名歌名歌名歌名歌名歌名歌名歌名歌名歌名歌名歌名歌名&lt;/span>&lt;/td>'
		            	+'&lt;td class="gx">&lt;span>&lt;a href="#" onclick="getlist();">歌星歌星歌星歌星歌星歌星&lt;/a>&lt;/span>&lt;/td>'
		            	+'&lt;td class="mp3">&lt;span>&lt;a href="">mp3&lt;/a>&lt;/span>&lt;/td>'
		            	+'&lt;td class="mv">&lt;span>&lt;a href="">mv&lt;/a>&lt;/span>&lt;/td>'
		            	+'&lt;td class="ls">&lt;span>&lt;a href="">ls&lt;/a>&lt;/span>&lt;/td>'
		        	+'&lt;/tr>';
        		$("#songList").append(str);
        		str = null;
        	}
        }
&lt;/script>
&lt;/html>
</pre><br /><br />每次"点击装载数据"链接,能在任务管理器看到此IE进程的内存加了500K,请高手看看,看看怎么解决
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/230695#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 14:25:09 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230695</link>
        <guid>http://www.javaeye.com/topic/230695</guid>
      </item>
      <item>
        <title>ext 图片预览事件触发以及IE7下预览图片</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javaExtjs.javaeye.com">chanball</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231164" style="color:red;">http://www.javaeye.com/topic/231164</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          首先在FormPanel里添加图片预览区以及图片选择组件<br /><br /><pre name="code" class="java">
        /**
 	 * 图片上传区
 	 */
 	this.imageUploadForm = new Ext.form.FormPanel({
 		region: 'east',
 		fileUpload: true,
 		width: 300,
 		split: true,
 		defaultType: 'textfield',
 		bodyStyle: 'align: center;',
 		defaults:{
 			hideLabel: true
 		},
 		items:[{
// 			labelSeparator: '',
 			id:'browseImage',
 			autoCreate:{
 				tag: 'input',
 				type: 'image',
 				src: Ext.BLANK_IMAGE_URL,
                style:'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);'
 				name: 'imageBrowse'
 			}
 		},{
 			inputType: 'file',
 			id: 'imageUpload',
 			cls: 'upst'
 		}]
 		
 	});</pre><br /><br />接下来添加选择完图片后的change事件<br /><pre name="code" class="java">
Global.img_reg=/\.([jJ][pP][gG]){1}$|\.([jJ][pP][eE][gG]){1}$|\.([gG][iI][fF]){1}$|\.([pP][nN][gG]){1}$|\.([bB][mM][pP]){1}$/
    /**
 	 *  浏览改变事件
     *  只有当imageUploadForm render后Ext.get('imageUpload')才有效
 	 */
 	this.imageUploadForm.on('render',function(f){
 		this.imageUploadForm.form.findField('imageUpload').on('render',function(){
	 		Ext.get('imageUpload').on('change',function(field,newValue,oldValue ){
	 			var url = 'file:///'+Ext.get('imageUpload').dom.value;
           if(Global.img_reg.test(url)){
								
								if(Ext.isIE7){
									Ext.get('imageBrowse').dom.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = url;
								}else{
									Ext.get('imageBrowse').dom.src = url;
								}
							}
	 				 		},this);
 		},this);
 	},this);
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/231164#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 14:11:04 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231164</link>
        <guid>http://www.javaeye.com/topic/231164</guid>
      </item>
      <item>
        <title>JavaScript 1.5 核心参考:全局函数:eval</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wangsong76.javaeye.com">wangsong76</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231034" style="color:red;">http://www.javaeye.com/topic/231034</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>英文原文地址： <br />http://developer.mozilla.org/cn/docs/JavaScript_1.5_%E6%A0%B8%E5%BF%83%E5%8F%82%E8%80%83:%E5%85%A8%E5%B1%80%E5%87%BD%E6%95%B0:eval <br /><br />JavaScript 1.5 核心参考:全局函数:eval <br />From MDC <br /><br />目录 <br /><br />1 Summary <br />2 Syntax <br />3 Parameters <br />4 Description <br />5 Don't use eval! <br />6 Parsing JSON <br />6.1 Accessing member properties <br />7 Cross-implementation compatibility <br />8 Examples <br />8.1 Example: Using eval <br />8.2 Example: Using eval to evaluate a string of JavaScript statements <br />9 Return value <br />10 See also <br /><br /><br /><strong>Summary </strong><br />Core Function <br /><br />Evaluates a string of JavaScript code without reference to a particular object. <br />运行与具体对象无关的JavaScript代码， <br /><br /><strong>Syntax </strong><br />eval(string [, object]) <br /><br /><strong>Parameters </strong><br />string <br />A string representing a JavaScript expression, statement, or sequence of statements. The expression can include variables and properties of existing objects. <br />一个JavaScript表达式，语句，或语句序列。这个表达式包含变量和已存在的对象属性值。 <br />object <br />Template:non-standard inline <br />An optional argument; if specified, the evaluation is restricted to the context of the specified object. <br />一个可选参数；如果指定了，这个运行限制在指定对象的范围内。 <br /><strong>Description </strong><br />eval is a top-level function and is not associated with any object. <br />eval 是一个顶级函数，不需要与任何对象结合。 <br /><br />The argument of the eval function is a string. If the string represents an expression, eval evaluates the expression. If the argument represents one or more JavaScript statements, eval performs the statements. Do not call eval to evaluate an arithmetic expression; JavaScript evaluates arithmetic expressions automatically. <br />eval 函数的参数是一个字符串。如果字符串是一个表达式，eval计算这个表达式。如果参数是一个或者多噶JavaScript语句，eval执行这些语句。不要调用eval去计算一个数学表达式；JavaScript是自动计算表达式的。 <br /><br />If you construct an arithmetic expression as a string, you can use eval to evaluate it at a later time. For example, suppose you have a variable x. You can postpone evaluation of an expression involving x by assigning the string value of the expression, say "3 * x + 2", to a variable, and then calling eval at a later point in your script. <br />如果你构造了一个数学表达式字符串，你可以使用eval计算它在晚一点的时候。例如，假设你有一个变量x。你可以推迟包含x的表达式的计算通过把表达式转换成字符串的值，比如说&ldquo;3 * x + 2&rdquo;作为一个变量，稍后在你的script中再指明调用eval。 <br /><br />If the argument of eval is not a string, eval returns the argument unchanged. In the following example, the String constructor is specified, and eval returns a String object rather than evaluating the string. <br />如果eval的参数不是字符串，eval不改变的返回参数值。如下面的例子，参数是字符串构造器，eval返回字符串对象而不是计算字符串。 <br /><br />eval(new String("2 + 2")); // returns a String object containing "2 + 2" <br />eval("2 + 2"); // returns 4 <br /><br />You can work around this limitation in a generic fashion by using toString. <br />你可以让它绕过这个限制，通常是使用toString方法。 <br /><br />var expression = new String("2 + 2"); <br />eval(expression.toString()); <br /><br />You cannot indirectly use the eval function by invoking it via a name other than eval; if you do, a runtime error might occur. For example, you should not use the following code: 你不能直接使用其他名字来调用eval函数；如果你这样做，就会出现一个运行错误。例如，你不能像下面这样写： <br />var x = 2; <br />var y = 4; <br />var myEval = eval; <br />myEval("x + y"); <br /><br /><br /><strong>Don't use eval! </strong><br />eval() is a dangerous function, which executes the code it's passed with the privileges of the caller. If you run eval() with a string that could be affected by a malicious party, you may end up running malicious code on the user's machine with the permissions of your webpage / extension. <br />eval()是一个危险的函数，它能执行具有调用者权限的代码。如果你执行恶意代码伪装成的字符串，你最终会在客户机上运行具有网页扩展权限的恶意代码， <br /><br />There are safe alternatives to eval() for common use-cases. <br />下面是通常情况下安全的使用eval的方法。 <br /><br /><strong>Parsing JSON </strong><br />See <span style="text-decoration: underline;">Downloading JSON and JavaScript in extensions.</span> </p>
<p><span style="font-size: xx-small;">(</span><a href="http://developer.mozilla.org/En/Downloading_JSON_and_JavaScript_in_extensions"><span style="font-size: xx-small;">http://developer.mozilla.org/En/Downloading_JSON_and_JavaScript_in_extensions</span></a><span style="font-size: xx-small;">)</span><br /><br /><strong>Accessing member properties </strong><br />You should not use eval to convert property names into properties. Consider the following example. The getFieldName(n) function returns the name of the specified form element as a string. The first statement assigns the string value of the third form element to the variable field. The second statement uses eval to display the value of the form element. <br />你不要用eval转换属性名字到属性里面。思考下面的例子。getFieldName(n)返回指定元素的名字的字符串形式。第1句将第3个元素的字符串值赋给变量field。第2句使用eval显示从元素中获取的值。 <br /><br />var field = getFieldName(3); <br />document.write("The field named ", field, " has value of ", <br />eval(field + ".value")); <br /><br />However eval is not necessary here. In fact, its use here is discouraged. Instead, use the member operators, which are much faster: <br />eval在这儿不是必须的。实际上，它在这里使用是不合适的。可以使用成员操作符来代替，而且安全的多。 <br /><br />var field = getFieldName(3); <br />document.write("The field named ", field, " has value of ", <br />field[value]); <br /><br /><strong>Cross-implementation compatibility （跨平台兼容性）</strong>It should be noted that the second optional parameter to eval is non-standard and not supported in all JavaScript implementations; at the time of this writing, for instance, Rhino doesn't support it, nor does Safari's JavaScriptCore. <br />也许你会注意到，eval的第2个选项参数不是标准的，不是所有的javascript执行器都支持。 <br /><br />To maintain compatibility across implementations, it is recommended that the second parameter to eval not be used. To achieve the same effect, the with statement may be used. So rather than using <br />eval(string, object); <br />use <br />with (object) { <br />eval(string); <br />} <br /><br />为了保持兼容，推荐不使用eval的第2个参数。为了达到相同的效果，要使用with语句。不使用eval(string, object);而使用：with (object) { eval(string);} <br /><br /><strong>Examples </strong><br />The following examples display output using document.write. In server-side JavaScript, you can display the same output by calling the write function instead of using document.write. <br />下面的例子使用document.write 显示输出。在服务器段的JavaScript,你可以使用write 函数代替使用document.write 显示通用的输出。 <br /><br /><strong>Example: Using eval </strong><br />In the following code, both of the statements containing eval return 42. The first evaluates the string "x + y + 1"; the second evaluates the string "42". <br />这个例子，两个包含eval的语句都返回42.第一个计算字符串"x + y + 1"; 第二个计算字符串"42"。 <br />var x = 2; <br />var y = 39; <br />var z = "42"; <br />eval("x + y + 1"); // returns 42 <br />eval(z); // returns 42 <br /><br /><br /><strong>Example: Using eval to evaluate a string of JavaScript statements </strong><br />The following example uses eval to evaluate the string str. This string consists of JavaScript statements that open an Alert dialog box and assign z a value of 42 if x is five, and assigns 0 to z otherwise. When the second statement is executed, eval will cause these statements to be performed, and it will also evaluate the set of statements and return the value that is assigned to z. <br />这个例子使用eval计算字符串str。这个字符串由JavaScript语句构成，它包括：如果x等于5，则打开一个alert对话框，并赋值z为42，否则赋值z为0.当第2句执行的时候，eval会使第1句中JavaScript语句被执行，并且执行语句和返回z的值。 <br /><br />var str = "if (x == 5) {alert('z is 42'); z = 42;} else z = 0; "; <br />document.write("&lt;P&gt;z is ", eval(str)); <br /><br /><strong>Return value </strong><br />eval returns the value of the last expression evaluated. <br />eval 返回前一个表达式的计算值。 <br /><br />var str = "if ( a ) { 1+1; } else { 1+2; }"; <br />var a = true; <br />var b = eval(str); // returns 2 <br />alert("b is : " + b); <br />a = false; <br />b = eval(str); // returns 3 <br />alert("b is : " + b); <br /></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/231034#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 12:08:19 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231034</link>
        <guid>http://www.javaeye.com/topic/231034</guid>
      </item>
      <item>
        <title>让人郁闷的window.open</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sliver.javaeye.com">会飞的狗</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/231006" style="color:red;">http://www.javaeye.com/topic/231006</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><img src="http://sliver.javaeye.com/upload/picture/pic/20401/ec4287c8-3e46-3928-8f9c-74fca02a8c43.jpg " height="27" alt="toolbar" width="557" /></p>
<p>&nbsp;</p>
<p>在使用Ext.grid.GridPanel时，为了方便导出表格中数据。使用了window.open在新窗口中打开PDF,XLS格式的结果，在firefox2.0.15,3.0.1下正常，在IE6，IE7下返回一个空白页面，从服务器控制台可以看到服务器端是执行了报表导出动作，换成链接方式&lt;a href="export.action?xxx=xxx"&gt; 则可以正确显示结果。</p>
<p>window.open(url) 与 &lt;a href="url"&nbsp;&gt;有这么大区别？export.action是将grid中数据已报表形式显示出来,并可选择导出文件类型。</p>
<p>&nbsp;</p>
<p>代码如下</p>
<p>&nbsp;</p>
<pre name="code" class="java">      var grid = new Ext.grid.GridPanel({
          border:false,
          viewConfig: {
            forceFit:true
          },
          store: store,
          cm: cm,
          sm:gridsm,
          loadMask: true,
          bbar: new Ext.PagingToolbar({
              pageSize: 20,
              store: store,
              displayInfo: true,
              items:['-',{
                  text:'查询范围',
                  menu:contactGridFilterMenu
                },
                filterField,
                filterButton,
                clearButton,
                '-',
                {
                  iconCls:'icon-pdf',
                  tooltip:'将表格导出为PDF文件',
                  handler:function(){
                    var s='';
                    if(store.lastOptions){
                      s+=Ext.urlEncode(store.lastOptions);
                    }
                    if(store.baseParams){
                      if(s===''){
                        s+=Ext.urlEncode(store.baseParams);
                      }else{
                        s+='&amp;';
                        s+=Ext.urlEncode(store.baseParams);
                      }
                    }
                    if(''!==s){
                      s = '?'+s;
                    }
                    window.open("export.action"+s,"_blank");
                  }
                },{
                  iconCls:'icon-xls',
                  tooltip:'将表格导出为XLS文件',
                  handler:function(){
                    var s='';
                    if(store.lastOptions){
                      s+=Ext.urlEncode(store.lastOptions);
                    }
                    if(store.baseParams){
                      if(s===''){
                        s+=Ext.urlEncode(store.baseParams);
                      }else{
                        s+='&amp;';
                        s+=Ext.urlEncode(store.baseParams);
                      }
                    }
                    if(''===s){
                      s = '?type=xls';
                    }else{
                      s = '?' + s +'&amp;type=xls';
                    }
                    window.open("export.action"+s);
                  }
                }
              ]
          })
      });</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/231006#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 11:00:25 +0800</pubDate>
        <link>http://www.javaeye.com/topic/231006</link>
        <guid>http://www.javaeye.com/topic/231006</guid>
      </item>
      <item>
        <title>关于Ext设计好的界面经常乱掉问题解决方法</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://oznyang.javaeye.com">oznyang</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230952" style="color:red;">http://www.javaeye.com/topic/230952</a>&nbsp;
          发表时间: 2008年08月21日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近在用Ext做界面设计的时候发现经常出现正常的页面在使用几次之后布局就乱七八糟的问题<br />查了下代码，发现是Ext的stateful作怪<br />在Component.js中有这么一句：<br /><pre name="code" class="java">
if(this.stateful !== false){
        this.initState(config);
    }
</pre><br />如果你调用Ext.state.Manager.setProvider启用了状态保持功能，很多component就会保持状态<br /><pre name="code" class="java">
saveState : function(){
        if(Ext.state.Manager){
            var state = this.getState();
            if(this.fireEvent('beforestatesave', this, state) !== false){
                Ext.state.Manager.set(this.stateId || this.id, state);
                this.fireEvent('statesave', this, state);
            }
}</pre><br />可以看到保持的状态默认是用this.stateId || this.id做key，但是大部分component我们不会给他指定id，这时候ext就会默认给他生成一个id<br /><pre name="code" class="java">
    getId : function(){
        return this.id || (this.id = "ext-comp-" + (++Ext.Component.AUTO_ID));
    }
</pre><br />可以看出这个id是从ext-comp-1000开始的字符串<br />很有可能一个界面在刷新后，两个不同component具有同一个id，这时候stateful就会搞错对象，举个例子<br />Ext.Window中保持的状态是：<br /><pre name="code" class="java">
    getState : function(){
        return Ext.apply(Ext.Window.superclass.getState.call(this) || {}, this.getBox());
    },
    getBox : function(local){
        var s = this.el.getSize();
        if(local === true){
            s.x = this.el.getLeft(true);
            s.y = this.el.getTop(true);
        }else{
            var xy = this.xy || this.el.getXY();
            s.x = xy[0];
            s.y = xy[1];
        }
        return s;
    },
</pre><br />可以看到保存了Ext.Window的坐标以及大小，如果这些信息被加载到了其他component上面去了，不乱掉才怪<br />解决这个问题的办法是，默认禁掉stateful<br /><br />1.不调用Ext.state.Manager.setProvider 不会启用保持<br />2.<pre name="code" class="java">
if(this.stateful !== false){
        this.initState(config);
    }
</pre>改成<br /><pre name="code" class="java">
if(this.stateful){
        this.initState(config);
    }
</pre>默认就不保持状态，我就是这么干的
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/230952#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Aug 2008 10:20:57 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230952</link>
        <guid>http://www.javaeye.com/topic/230952</guid>
      </item>
      <item>
        <title>关于如何编写灵活定制列样式的Grid控件</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ham.javaeye.com">ham</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230287" style="color:red;">http://www.javaeye.com/topic/230287</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Grid控件，相信很多人都已经写过，或者重构过了。<br />对于Grid中的某些功能，实现起来会比较头疼。其中很重要的一个就是定制列样式的实现，如将列设为单选框，下拉框…等等。网上的Grid控件的做法，几乎都是使用的内部定义好的一些样式，使用时进行指定，虽说实现了大部分的需求功能，但对于某些特殊的自定义功能，想实现起来就很没什么办法了，只有扩展源代码。<br /><br />做Grid控件有一段时间了，被这个问题烦了有一段时间。开始的时候也是模拟网上部分Grid的实现方式，自定义了部分列样式，封装在Grid中，但面对着各种需求的自定义样式，感觉越来越力不从心。<br /><br />经过一段时间的摸索之后，终找到了一种个人最好的实现方式，对于实现某些自定义样式很方便，也很灵活。可以有效的将列的样式和Grid控件分离开来。实现了高定制化的Grid。<br /><br />还是用代码来说明吧：<br /><br />Grid控件中用实现自定义表格的伪代码：<pre name="code" class="js">
function myGridConfig(id){
    this.__id=id;
    var _self=this;
    ...
    _self.createHead=function(titles){
        this.titles=titles;//设列标题以数组形式存储
        ...
    }
    _self.getdata=function(){
        //从数据库读取数据，并以二维数组的方式返回。
    }
    _self.createBody=function(){
        ...
        var grid=...//表格对象。
        var data=getdata();
        for(var i=0;i&lt;data.length;i++){
            var cells=data[i];
            var tr = grid.insertRow();//添加一行。
            for(var j=0;j&lt;this.titles.length;j++){
                var td=document.createElement("td");
                if(document.all[this.__id+"_col_"+j]){//查找页面中有没有id为 id_col_index 形式的元素.这里使用了IE特有的document.all语法。
                    var customHtml = document.all[this.__id+"_col_"+j].innerHTML;
                    /**替换掉指定部分（即"_id_","_value_"）的值。
                    通常的数据中，第一行都是从数据库中读取出来的id，所以此处将_id_替换为cells[0].**/
                    customHtml = customHtml.replace(/_id_/g,cells[0]).replace(/_value_/g,cells[j]);
                    td.innerHTML=customHtml;
                }else{
                    	td.innerHTML=cells[j]?cells[j]:"";
                }
                tr.appendChild(td);//将单元格TD加入TR。
            }
            grid.appendChild(tr);//将TR加入表格。
        }
        ...
    }
    ...
}</pre><br /><br />有了以上的代码，那么在调用Grid的页面，就可以很方便的实现自定义列样式了。假设从数据库中通过getdata()方法得到的数据为以下形式：<pre name="code" class="xml">
[
["001","张三","男"],
["002","李四","男"],
["003","王五","男"]
]</pre><br /><br />如想在最后一列加上一个“操作”列。则可以写一个div,将所要实现的功能放在div之中：<pre name="code" class="js">
//这里是myGrid_col_3..如果Grid控件的__id为"myGrid",它的第四列就会被替换成为其内部的内容。
&lt;div id="myGrid_col_3" style="display:none;">
&lt;a onclick="edit('_id_');">编辑&lt;/a>
&lt;a onclick="del('_id_');">删除&lt;/a>
//由于在上面的代码中，_id_会被替换为data中的第一列的值，并赋到相应的单元格内。
//所以每点击编辑，就会调用edit方法。并将当前行的第一列值传进去。就可以对专门的某一条数据进行操作。
&lt;/div>
&lt;script>
function.onload=function(){
    var gridConfig=new myGridConfig("myGrid");
    var titles=["编号","姓名","性别","操作"]//存储Grid标题的数组
    gridConfig.createHead(titles);
    gridConfig.createBody();
}
&lt;/script>
</pre><br />又例如，要将第三列的值改变为一个select下拉框，那么，只要将这段代码加入到页面中，实现了。：<pre name="code" class="js">&lt;div id="myGrid_col_2" style="display:none;">
&lt;select>
&lt;script>
if("男"=="_value_"){//如果当前单元格的值为"男"，那么下拉框就选择男。否则就不选
    document.write("&lt;option selected>男&lt;/option>");
}else{
    document.write("&lt;option>男&lt;/option>");
}
if("女"=="_value_"){
    document.write("&lt;option selected>女&lt;/option>");
}else{
    document.write("&lt;option>女&lt;/option>");
}
&lt;/script>
&lt;/select>
&lt;/div></pre><br />是不是很方便呢？<br /><br />这样这种方式的好处就是，样式代码和Grid控件分离开了，两者不再耦合在一起，当想要修改某一列的样式时，只要修改那一列的样式所在的div的内容即可。你想到什么样的样式，就可以写什么样的样式，只要你想得到，几乎都可以通过相应的方式实现。<br /><br />当然，一般当前行数据的id是不会显示在代码中，而是是被隐藏起来的。隐藏的功能只要在myGridConfig中编写相应的代码进行实现就可以了，这里只是讨论自定义列样式的功能，所以就不涉及那方面了。<br /><br />如果各位对我这个实现有什么看法和建议或者不清楚的地方，欢迎交流和讨论。<br /><br />另外如果各位有各好的定制列样式的方法，各位是怎么做的呢？<br />------------------------------------------------------------------------------------------------<br />本来想把Grid的代码也共享过来，但由公司是使用的平台的特殊性，我写的那些控件都是以特定的格式编写和调用的，Grid控件离开平台就无法运行，要修改很大一部分代码，所以就没做这方面的工作。<br />(08-20 1:08 by ham)
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/230287#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 01:25:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230287</link>
        <guid>http://www.javaeye.com/topic/230287</guid>
      </item>
      <item>
        <title>网页显示日历的初步实现</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://chjl2020.javaeye.com">tianmo2008</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230114" style="color:red;">http://www.javaeye.com/topic/230114</a>&nbsp;
          发表时间: 2008年08月19日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          刚学Prototype框架，想自己写个日历控件来练习一下Prototype，整理了一下思路后,初步实现了一些代码。希望大家给点意见。<br />（运行要引进Prototype 1.5.1.2.js）<br />&lt;script type="text/javascript" src="Prototype 1.5.1.2.js">&lt;/script><br /><pre name="code" class="java">
&lt;body>
&lt;table id="date" cellpadding="0" cellspacing="0" border="1px">
	&lt;tr id="week">
    	&lt;td>星期日&lt;/td>
        &lt;td>星期一&lt;/td>
        &lt;td>星期二&lt;/td>
        &lt;td>星期三&lt;/td>
        &lt;td>星期四&lt;/td>
        &lt;td>星期五&lt;/td>
        &lt;td>星期六&lt;/td>
    &lt;/tr>
    &lt;tr>
    	&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>
    &lt;/tr>
    &lt;tr>
    	&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>
    &lt;/tr>
    &lt;tr>
    	&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>
    &lt;/tr>
    &lt;tr>
    	&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>
    &lt;/tr>
    &lt;tr>
    	&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>
    &lt;/tr>
    &lt;tr>
    	&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>
    &lt;/tr>
    &lt;tr>
    	&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>&lt;td>&lt;/td>
    &lt;/tr>
&lt;/table>
&lt;script type="text/javascript">
/**
返回每个月的最大天数
*/
function getMonthDay(month){

	if(month == 0)month=12;
	if(month == 13)month=1;
	
	var year = new Date();
	
	var $31 = [1,3,5,7,8,10,12];//３１天的月份
	
	if(month == 2){// 闰年｜平年的２月份处理（印象中初中数学书上好象是这样的，也不知道对错）
		if(year.getYear()%4 == 0){
			return 29;
		}
		return 28;
	}
	
	for(var i=0;i&lt;$31.length;i++){
		if(month == $31[i]){
			return 31;
		}
	}
	
	return 30;
}


var week = $("week");//标题行
var weekDate = new Date();

var week_day = week.down(weekDate.getDay());//今天星期几
	week_day.setStyle({backgroundColor:"#33FFFF"});//把对应的星期背景渲染

var this_monthDay = getMonthDay(weekDate.getMonth()+1);//当前月份的天数。

/*计算每月的一号是星期几,
想在网上这个公式，但找到的都是长篇大论，看了心烦。
所以自己找了一下规律，写了个公式，测试了一下感觉还挺准的，
有希望有更好建议的人不要吝啬，能提供一下比较可靠的实现。
*/
var first_Day = weekDate.getDay() + (Math.abs(weekDate.getDate() % 7 - 7) + 1);//计算每月的一号是星期几
if(first_Day > 7)first_Day = first_Day - 7;
if(first_Day == 7)first_Day = 0;


var n = 1;
come_Back:
while((week = week.next()) != undefined){
	for(var j = 0;j &lt; 7;j ++){
		if(n == 1 && j &lt; first_Day){
			
		}else if(n == 1 && j == first_Day){
			week.down(j).update(n+"号");
			n ++;
		}else{
			if(n == weekDate.getDate()){
				week.down(j).setStyle({backgroundColor:"#33FFFF"});//渲染当天的背景
			}
			week.down(j).update(n+"号");
			n ++;
		}
		
		if(n > this_monthDay)
			break come_Back;//大于每月的最大天数，就直接返回
	}
}
&lt;/script>
&lt;/body>
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/230114#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Aug 2008 12:40:24 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230114</link>
        <guid>http://www.javaeye.com/topic/230114</guid>
      </item>
      <item>
        <title>flamingo生成工程过程解析</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovefly-zero.javaeye.com">lovefly_zero</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230728" style="color:red;">http://www.javaeye.com/topic/230728</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、在DOS模式下随便选择一个你的文件夹，输入"flamingo create project"<br /><br />在运行Maven2调用com.exadel.flamingo.maven.plugin插件后，系统会提示你l"Please choose the type of application to generate (flamingo-seam, flamingo-spring)[flamingo-seam]"，选择你需要的程序类型。在方括号描述的是"FlamingoSDK.properties"文件默认的选择项，若想选择它们，只要按回车即可。然后按下面预定的步骤进行就可以了。<br /><br />我没有研究过Seam，所以我只使用了Spring的方式，下面是Spring的配置。<br /><br /><br />Spring Configuration<br />                                                                                  步骤选择  (<span style="color: blue">蓝色为中文描述信息</span>)<br />Please enter the location in which your new                      application will be created (i.e. c:/java/development): <br />  <br /><span style="color: blue">为将要创建的工程指定一个文件夹路径（可以是相对路径，也可以是绝对路径）</span>      <br /><br />Enter the project name (e.g. myproject): [myproject]  <br /><br /><span style="color: blue">创建一个工程名，包括指定Pom.xml文件的artifactId里，在生成一个war或者ear 文件时也会要使用到它</span><br />                                                                                  Please enter the root package name for your project(e.g. com.mydomain.myproject): [com.sample]                    <br /><br /><span style="color: blue">为所有的源文件指定一个包名，它包括Pom.xml文件的groupId,Flex和Java Web的 package名.</span><br /><br />Will this project have Flex or JavaFX user interface? (flex, javafx): [flex]<br />     <br /><span style="color: blue">这一步仅在选择flex时会疑问，因为它对客户端有特殊的要求，需要你在后来生成的flex里的pom.xml文件中指定一个Flex的SDK的环境变量，才能把mxml和as文件正确编译成swf文件</span><br /><br />Will this project use Hessian or AMF protocol? (amf, hessian): [amf]<br />  <br /><span style="color: blue">按照用户自己的需求设置一个协议，pom.xml将为此配置一个依赖："amf-serializer-1.6.0.jar" 或者"hessian-3.1.3.jar".然后创建相应的源代码</span><br /><br />What kind of database are you using? (hsql, mysql, oracle,postgres, mssql, db2, sybase, none): [hsql] <br />  <br /><span style="color: blue">选择一个数据库类型，然后将会自动向Maven的仓库下载一个相应的JDBC driver和在Hibernate.config.xml文件中配置当前数据库方言如果你选择"none"，该向导将会停止并且不会生成数据库代码的样本。</span><br /><br />Enter the JDBC URL for your database (e.g. jdbc:hsqldb:.):       [jdbc:hsqldb:.]   <br /><br /><span style="color: blue">为你存在的数据库配置JDBC路径，如果你不是使用"hsql"数据库，请把相应的数据库driver jar包复制到web服务器的lib路径比如：Jboss --"jboss/server/default/lib".</span><br /><br />Enter database username: [sa] <br /><br /><span style="color: blue">输入数据库的用户名</span><br /><br />Enter database password: []  <br /><br /><span style="color: blue">输入数据库的密码，没有密码，请重新设置一个。如果你直接按回车，系统将使用你上次创建的工程时使用的数据库密码</span><br /><br />Do you want to update the database schema each time you          deploy? (y, n): [y]<br /> <br /><span style="color: blue">如果你按“y”,Hibernate 将每次在你的工程重新部署时修改你的数据库。按"n",仅在你的数据库表结构和实体模型验证不匹配时才是执行修改</span><br /><br />Enter the entity class name (Flex source files to view and       <br />modify entities will be generated as well): [Person] <br /><br /><span style="color: blue">指定一个实体类名称并生成可显示和可编辑实体对象的示例代码，服务器端和客户端都会生成示例代码。</span><br /><br /><br />2、导航到目标工程的地址，仔细检查已构建完的工程。应用模块的结构在"readme.txt"文件中有详细的描述。编译并发布整个实体工程，在命令行里使用"mvn package"命令。
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/230728#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 15:40:21 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230728</link>
        <guid>http://www.javaeye.com/topic/230728</guid>
      </item>
      <item>
        <title>flamingo命令解析</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovefly-zero.javaeye.com">lovefly_zero</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/230716" style="color:red;">http://www.javaeye.com/topic/230716</a>&nbsp;
          发表时间: 2008年08月20日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在http://www.exadel.com/web/portal/download/flamingo 下载flamingo1.6<br /><br />首先把{flamingo_home}/bin在环境变量Path下，这样你就可以在任何盘符下使用flamingo命令了<br />"flamingo" -执行Flamingo代码生成器。“flamingo.bat”批处理文件和"flamingo"脚本文件负责处理在命令行使用Maven2插件命令构建一个Flamingo工程并产生相关源代码。前提：<span style="color: red">你要确保你安装了Maven2</span>。<br /><br />摘要<br />flamingo 命令<br /><br /><br />命令<br /><br />create project<br />创建一个Flamingo 工作环境，它包括了所有必需的依赖、Maven的pom.xml文件、一个flamingoproject配置文件。<br />1、一个专业的引导程序将围绕在完整一个安装过程。<br />2、flamingoproject.properties文件中包含了当前项目的属性定义。<br />3、Maven的pom.xml文件的将使工程更容易导入，更好的使用Junit进行测试。<br /><br />示例: flamingo create project<br /><br /><br />create entity<br /><br />根据工程中的Seam/Spring框架部分依赖创建不同的实体服务：<br />1、一个实体Bean、Bean服务和它相关的Junit的测试<br />2、包括使用"create screen"命令生成本实体的Flex部分的代码。<br /><br />示例: flamingo create entity -Dname=Book<br /><br /><br />create screen<br /><br />从已存在的实体类生成.mxml源代码的CRUD部分<br />1、它包括一个可编辑的表格和显示一个从数据库获取来的数据列表<br />2、在"create screen"期间自动生成ActionScript操作类，不需要再使用"generate beans"命令。<br /><br />示例: flamingo create screen<br /><br /><br />generate beans<br /><br />从已经存在的Java文件生成ActionScript文件。它能从工程中的所有Java文件或者单个Java文件生成。当然，它需要你指定源文件的包名。这个代码生成器是在"create screen"命令期间内自动执行的。<br /><br />示例:  flamingo generate beans<br />	<br />		<br /><br /><br />help  <br />打印帮助.<br /><br />示例:  flamingo help
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/230716#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Aug 2008 15:23:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/230716</link>
        <guid>http://www.javaeye.com/topic/230716</guid>
      </item>
      <item>
        <title>EXT/FCKEditor 集成 -- AJAX UI -- 一种web开发的新的思维</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://vb2005xu.javaeye.com">vb2005xu</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/229180" style="color:red;">http://www.javaeye.com/topic/229180</a>&nbsp;
          发表时间: 2008年08月18日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>代码如下,刚学习EXT,感觉比使用DOJO畅快许多,不像&lt;&lt;征服AJAX dojo,prototype,script.aculo.us&gt;&gt;书中作者使用的DOJO是0.4的版本,我下的是1.1的版本,结果许多组件的命名空间都变了,书中讲的代码等于是废的.前面的prototype,script.aculo.us到是讲的不错,但是不深. 所以后面自己也就废弃了DOJO的学习,学习了EXT.</p>
<p>我是PHP程序员,做PHP也就意味着不能像JAVA,.NET一样使用服务器端组件,更没有服务端AJAX组件了...</p>
<p>我是从JAVA web开发者转到PHP的,之前参与过北京市旅游局系统二期改造项目和中关村高新技术园调查的开发,</p>
<p>使用工作流组件开发相当快. 转到PHP后刚开始有些不太适应,几个月后也就适应了,学习到了很多东西.包括开发思维的转变.</p>
<p>&nbsp;</p>
<p>这里总结了一些经验:</p>
<p>1. 使用一套PHP4/PHP5兼容框架,推荐使用FLEAPHP,使用好几个月了,相当的好用.</p>
<p>2. 熟悉SMARTY 这个模板框架是必须学会的,即使你是程序员</p>
<p>3. 熟悉MVC结构,这个是最重要的.如果你不想在后期狂改代码的话</p>
<p>[对于PHP我只分出VC和DAO层,一般只需要这两个]</p>
<p>4. 要求会使用JS开发,知道使用OOP来写JS. 至少熟悉Prototype框架</p>
<p>5. 对做企业应用的话EXT是不能少的,虽然我到现在还不知道它的版权到底是怎样的.我没有找到</p>
<p>[说是GPL3 或者LGPL 但是仍然要收费,做多个项目是不是要求购买OEM版的,我也不知道,所以决定购买一套UCREN]</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>index.html</p>
<p>&nbsp;</p>
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&lt;title&gt;EXT/FCKEditor 集成 -- AJAX UI -- 一种web开发的新的思维,要及时转换思想&lt;/title&gt;<br />&lt;link rel="stylesheet" type="text/css" href="/ucren/extjs/js_source/resources/css/ext-all.css" /&gt;<br />&lt;script type="text/javascript" src="/ucren/extjs/js_source/ext-base.js"&gt;&lt;/script&gt;<br />&lt;script type="text/javascript" src="/ucren/extjs/js_source/ext-all.js"&gt;&lt;/script&gt;</p>
<p>&lt;!-- //具体事例 --&gt;<br />&lt;script type="text/javascript" src="/ucren/fckeditor/fckeditor.js"&gt;&lt;/script&gt;<br />&lt;script type="text/javascript" src="/ucren/extjs/app/extfckapp/FckExtjsCall.js"&gt;&lt;/script&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;<br />&lt;!-- //页面中子导航菜单 --&gt;</p>
<p><br />&lt;/body&gt;<br />&lt;/html&gt;</p>
<p>&nbsp;</p>
<p>FckExtjsCall.js</p>
<p>Ext.onReady(function() {<br />&nbsp;var fckFormObj = new Ext.FormPanel({<br />&nbsp;&nbsp;labelWidth:75,<br />&nbsp;&nbsp;url:"",<br />&nbsp;&nbsp;title:"EXT/FCKEditor 集成 -- vb2005xu | cdlinux.ys168.com",<br />&nbsp;&nbsp;bodyStyle:"padding:5px 5px 0",<br />&nbsp;&nbsp;defaultType:"form",<br />&nbsp;&nbsp;buttons:[<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;text:"Save" ,<br />&nbsp;&nbsp;&nbsp;&nbsp;type:'submit',<br />&nbsp;&nbsp;&nbsp;&nbsp;handler: function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取fckeditor内容赋给textarea<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.get('fckInstance').dom.value = "jjj";//fckobj.GetXHTML(true) + '提交后';&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.MessageBox.alert('FCK内容',Ext.get('fckInstance').dom.value);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (fckFormObj.form.isValid())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//创建响应测试函数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var fckobj_temp = FCKeditorAPI.GetInstance('fckInstance');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//fckobj_temp.UpdateLinkedField();//此方法被绑定到submit事件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fckFormObj.form.doAction('submit',{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="'submit.php'">url:'submit.php'</a>,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method:'post',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;waitMsg:'正在提交,请稍等...',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; success:function(form,action){//成功<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;showInfo('Success',fckobj_temp.GetXHTML(true));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } ,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; failure:function(form,action){//失败<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;showInfo('Failed','网络中断造成连接失败');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;text:"Cancel"<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;],<br />&nbsp;&nbsp;items:[{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xtype:"textarea",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldLabel:"编辑",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelSeparator:"：",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:"fckInstance", //div节点，这里要挂接FCKeditor编辑器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name:"fckInstance",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:736,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:371<br />&nbsp;&nbsp;}]<br />&nbsp;});<br />&nbsp;fckFormObj.render(document.body);<br />&nbsp;<br />&nbsp;/*创建Fckeditor对象 -- 构造函数指出了Fckeditor要挂接的id,上文中的xtype : 'textarea'指定*/<br />&nbsp;//在页面上要求挂载fckeditor/fckeditor.js文件<br />&nbsp;var fckobj = new FCKeditor('fckInstance',810,350);<br />&nbsp;fckobj.BasePath = "/ucren/fckeditor/" ;<br />&nbsp;fckobj.ToolbarSet = 'Default' ;<br />&nbsp;fckobj.ReplaceTextarea();&nbsp;<br />&nbsp;<br />&nbsp;//创建响应测试函数<br />&nbsp;function msgBox()<br />&nbsp;{<br />&nbsp;&nbsp;var fckobj_temp = FCKeditorAPI.GetInstance('fckInstance');<br />&nbsp;&nbsp;fckobj_temp.UpdateLinkedField();//此方法被绑定到submit事件<br />&nbsp;&nbsp;Ext.MessageBox.alert('FCK内容',fckobj_temp.GetXHTML( true ));<br />&nbsp;&nbsp;<br />&nbsp;}<br />&nbsp;<br />&nbsp;function showInfo(tip,str){<br />&nbsp;&nbsp;var win = new Ext.Window({<br />&nbsp;&nbsp;&nbsp;title: '信息提交应答提示 -- ' + tip,<br />&nbsp;&nbsp;&nbsp;width: 400 , height: 200 ,autoScroll: true ,<br />&nbsp;&nbsp;&nbsp;html: '&lt;h1&gt;'+ str +'&lt;/h1&gt;'&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;});<br />&nbsp;&nbsp;win.show();<br />&nbsp;}<br />});</p>
<p>&nbsp;</p>
<p>submit.php</p>
<p>这个是一个空文件 可以自己添加内容 .</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>以下是工程代码结构图</p>
<p>卷 kong 的文件夹 PATH 列表<br />卷序列号码为 00003AB9 6CED:1D77<br />G:.<br />├─.cache<br />├─.settings<br />├─blog<br />├─extjs<br />│&nbsp; ├─app<br />│&nbsp; │&nbsp; ├─extfckapp<br />│&nbsp; │&nbsp; └─ExtremeWebManager<br />│&nbsp; └─js_source<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─resources<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─css<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─default<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─box<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─button<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─dd<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─editor<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─form<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─grid<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─layout<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─menu<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─panel<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─progress<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─qtip<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─shared<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─sizer<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─slider<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─tabs<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─toolbar<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─tree<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─window<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─gray<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─button<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─panel<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─qtip<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─tabs<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─toolbar<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─window<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─vista<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─basic-dialog<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─grid<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─layout<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─qtip<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─sizer<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─tabs<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─toolbar<br />├─fckeditor<br />│&nbsp; └─editor<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─css<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─behaviors<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─dialog<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─common<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─fck_about<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─fck_docprops<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─fck_flash<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─fck_image<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─fck_link<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─fck_select<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─fck_spellerpages<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp; └─spellerpages<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─server-scripts<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─fck_template<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─dtd<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─filemanager<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─browser<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp; └─default<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─icons<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─32<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─js<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─connectors<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─asp<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─aspx<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─cfm<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─lasso<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─perl<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─php<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─py<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─smiley<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─msn<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─js<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─lang<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─plugins<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─autogrow<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─bbcode<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp; └─_sample<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─dragresizetable<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─placeholder<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp; └─lang<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─simplecommands<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─tablecommands<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─skins<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─default<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─office2003<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; │&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─silver<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─_source<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─classes<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─commandclasses<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─internals<br />├─json<br />├─phplibs<br />│&nbsp; ├─FLEA<br />│&nbsp; │&nbsp; ├─FLEA<br />│&nbsp; │&nbsp; │&nbsp; ├─Ajax<br />│&nbsp; │&nbsp; │&nbsp; ├─Com<br />│&nbsp; │&nbsp; │&nbsp; │&nbsp; └─RBAC<br />│&nbsp; │&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─Exception<br />│&nbsp; │&nbsp; │&nbsp; ├─Config<br />│&nbsp; │&nbsp; │&nbsp; ├─Controller<br />│&nbsp; │&nbsp; │&nbsp; ├─Db<br />│&nbsp; │&nbsp; │&nbsp; │&nbsp; ├─Driver<br />│&nbsp; │&nbsp; │&nbsp; │&nbsp; └─Exception<br />│&nbsp; │&nbsp; │&nbsp; ├─Dispatcher<br />│&nbsp; │&nbsp; │&nbsp; │&nbsp; └─Exception<br />│&nbsp; │&nbsp; │&nbsp; ├─Exception<br />│&nbsp; │&nbsp; │&nbsp; ├─Filter<br />│&nbsp; │&nbsp; │&nbsp; ├─Helper<br />│&nbsp; │&nbsp; │&nbsp; ├─Rbac<br />│&nbsp; │&nbsp; │&nbsp; │&nbsp; └─Exception<br />│&nbsp; │&nbsp; │&nbsp; ├─Session<br />│&nbsp; │&nbsp; │&nbsp; ├─View<br />│&nbsp; │&nbsp; │&nbsp; │&nbsp; └─Exception<br />│&nbsp; │&nbsp; │&nbsp; └─_Errors<br />│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─chinese-gb2312<br />│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─chinese-utf8<br />│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─default<br />│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─_common<br />│&nbsp; │&nbsp; └─_Cache<br />│&nbsp; └─Smarty<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─internals<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─plugins<br />├─prototype<br />├─taskofpig<br />│&nbsp; ├─Controller<br />│&nbsp; ├─Dao<br />│&nbsp; ├─js<br />│&nbsp; ├─music<br />│&nbsp; ├─tpl<br />│&nbsp; ├─tpl_c<br />│&nbsp; └─_log<br />├─ucren-documentation<br />│&nbsp; ├─common<br />│&nbsp; └─images<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─bigicons<br />└─ucren-engine<br />&nbsp;&nbsp;&nbsp; ├─classes<br />&nbsp;&nbsp;&nbsp; │&nbsp; ├─animation<br />&nbsp;&nbsp;&nbsp; │&nbsp; ├─net<br />&nbsp;&nbsp;&nbsp; │&nbsp; └─patch<br />&nbsp;&nbsp;&nbsp; └─resource<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─skins<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─qq</p>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/229180#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Aug 2008 13:54:38 +0800</pubDate>
        <link>http://www.javaeye.com/topic/229180</link>
        <guid>http://www.javaeye.com/topic/229180</guid>
      </item>
      <item>
        <title>看看这样的应用场景用什么Flex通信技术比较好</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://freespace.javaeye.com">freespace</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228968" style="color:red;">http://www.javaeye.com/topic/228968</a>&nbsp;
          发表时间: 2008年08月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Flex客户端->Web服务器->现场设备，现在在Flex中下发一个命令给Web服务器，Web服务器和现场设备通信，将通信结果返回给Flex客户端，不知道这种场景用什么通信技术比较和。<br /><br />目前已知,blazeds的发布/订阅模式不适合这种应用场景,因为接受方只有一个，需要放送到特定的客户端。
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/228968#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Aug 2008 15:40:41 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228968</link>
        <guid>http://www.javaeye.com/topic/228968</guid>
      </item>
      <item>
        <title>clientWidth和offsetWidth的差异测试</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lifesinger.javaeye.com">lifesinger</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/229935" style="color:red;">http://www.javaeye.com/topic/229935</a>&nbsp;
          发表时间: 2008年08月18日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          对clientWidth和offsetWidth在各个浏览器上的差异做了一个简单的测试页面，<a href="http://lifesinger.org/blog/wp-content/uploads/2008/08/client_offset_testpage.html" target="_blank">点击这里查看</a>。<br />请在各个浏览器中打开上面的页面查看效果。<br /><br />结论：<br />   1.  clientWidth and clientHeight的定义：The width and height of the content field, excluding border and scrollbar, but including padding. 但在ie6和ie7中，没有excluding scrollbar.<br />   2. 在ie6和ie7中，当元素的hasLayout为false时，clientWidth和clientHeight始终为0<br />   3. 在ie7中，zoom为1时，clientWidth有时依旧为0（参考test4和test5）<br />   4. 总之，在ie6和ie7中，某些情况下（很难一一找出），clientWidth会为0，是UNRELIABLE的。<br />   5. 相对而言，offsetHeight要可信得多。但是看上面的test6，在ie7中也挂了。
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/229935#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Aug 2008 21:33:05 +0800</pubDate>
        <link>http://www.javaeye.com/topic/229935</link>
        <guid>http://www.javaeye.com/topic/229935</guid>
      </item>
      <item>
        <title>也来秀一下我的EXT半成品</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://earls.javaeye.com">earls</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/229137" style="color:red;">http://www.javaeye.com/topic/229137</a>&nbsp;
          发表时间: 2008年08月18日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          采用菜单打开窗口的方式，实现单页面应用。<br />另外对需要的JS采用了动态按需加载的方式
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/229137#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Aug 2008 12:01:33 +0800</pubDate>
        <link>http://www.javaeye.com/topic/229137</link>
        <guid>http://www.javaeye.com/topic/229137</guid>
      </item>
      <item>
        <title>Flex学习笔记_06 使用行为对象和动画效果_认识行为对象、行为和组件</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://enboga.javaeye.com">enboga</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228827" style="color:red;">http://www.javaeye.com/topic/228827</a>&nbsp;
          发表时间: 2008年08月17日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong id="zasj"><span style="font-size: small;">6.1 认识行为对象</span>
</strong>
<br id="zgx_" />
<br id="zgx_0" />
<strong id="zasj1">6.1.1 什么是行为对象</strong>
<br id="zgx_1" />
</p>
<div id="amdv0" style="margin-left: 40px;">行为对象可以看作是触发器(Trigger) 和动画效果(Effect) 的结合体。<br id="v62o" />
触发器和事件并不相同，针对一个事件的触发器，受到事件的制约。事件可以被监听，而触发器不可以。<br id="qoa-" />
组件定义了多种触发器，成为本身的一个属性，这些触发器默认没有设置动画效果。<br id="b_0i" />
行为对象允许对一个触发器定义多个动画效果，当触发器被激活，这些动画会按某种顺序运行。<br id="n0wp" />
<br id="zgx_2" />
</div>
<p><strong id="zasj2">6.1.2 创建行为</strong>
<br id="wkdx" />
</p>
<div id="wkdx0" style="margin-left: 40px;">Move 标签：将target 指定的作用目标 img图片 从xFrom 移动到 xTo 位置，duration 表示持续的时间（单位：毫秒）。<br id="wkdx2" />
<pre name="code" class="xml">&lt;mx:Move id=&quot;myMove&quot; target=&quot;{img}&quot; xFrom=&quot;50&quot; xTo=&quot;150&quot; duration=&quot;2000&quot;/&gt;
&lt;mx:Image id=&quot;img&quot; x=&quot;53&quot; y=&quot;53&quot; source=&quot;tree.jpg&quot;/&gt;
&lt;mx:Button x=&quot;50&quot; y=&quot;170&quot; label=&quot;移动图片&quot; click=&quot;myMove.play()&quot;/&gt;</pre>
&nbsp;</div>
<!--  [if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:SpaceForUL/>
   <w:BalanceSingleByteDoubleByteWidth/>
   <w:DoNotLeaveBackslashAlone/>
   <w:ULTrailSpace/>
   <w:DoNotExpandShiftReturn/>
   <w:AdjustLineHeightInTable/>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:UseFELayout/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--  [if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]-->
<div id="xz.x0" style="margin-left: 40px;">
<p class="MsoNormal" id="uw7e21" align="left" style="text-align: left;">
<span style="font-size: 12pt; font-family: 宋体;"><span style="font-size: x-small;">所有动画对象都继承<span id="uw7e23" lang="EN-US"> Effect </span>
对象。抽象类，定义了以下方法来控制动画的播放流程：</span>
</span>
</p>
</div>
<div id="dsie6" style="margin-left: 40px;">
<ul id="dsie7">
<li id="dsie8">play(targets:Array = null, playReversedFromEnd:Boolean=false)：开始播放，targets：一组目标对象，这将覆盖原来的目标对象。playReversedFromEnd：是否逆向播放。</li>
<li id="wbzl">end()：停止播放动画</li>
<li id="wbzl0">pause()：暂停动画</li>
<li id="wbzl1">resume()：当暂停时，继续播放</li>
<li id="wbzl3">reverse()：逆向播放动画，如果动画正在播放，则从当前位置开始逆向播放。</li>
</ul>
<br id="ca:p" />
我们也可以使用AS来完成行为的创建：<br id="ca:p0" />
<pre name="code" class="xml">&lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.effects.Move;
   
            private var myMove:Move;           
            internal function initApp():void{
                myMove = new Move();
                myMove.xFrom = 50;
                myMove.xTo = 150;
                myMove.duration = 2000;
                myMove.target = img
            }
        ]]&gt;
    &lt;/mx:Script&gt;
   
    &lt;mx:Image id=&quot;img&quot; x=&quot;53&quot; y=&quot;53&quot; source=&quot;tree.jpg&quot;/&gt;
    &lt;mx:Button x=&quot;50&quot; y=&quot;170&quot; label=&quot;移动图片&quot; click=&quot;myMove.play()&quot;/&gt;</pre>
&nbsp;</div>
<div id="dsie10" style="margin-left: 40px;">
<p class="MsoNormal" id="dsie11" align="left" style="text-align: left;"><span style="font-size: 12pt; font-family: 宋体;">
</span>
</p>
</div>
<p><br id="zgx_4" />
<strong id="zasj3"><span style="font-size: small;">6.2 行为和组件</span>
</strong>
<br id="h7ia" />
<br id="axlm" />
<strong id="zasj5">6.2.1 组件的行为和动画效果</strong>
<br id="h7ia0" />
</p>
<div id="h7ia1" style="margin-left: 40px;">UIComponent 是所有组件的父类，定义了组件共有的属性和方法，其中包括行为触发器：<br id="uobr" />
<div id="e1ix">
<table class="zeroBorder" cellspacing="1" bordercolor="#ffffff" border="0" id="r4_y" bgcolor="#444444" width="608" cellpadding="3" style="height: 353px;">
<tbody id="e1ix0">
<tr id="e1ix1" bgcolor="#eeeeee">
<td id="e1ix2" align="center" width="33%">触发器名词<br id="e1ix3" />
</td>
<td id="e1ix4" align="center" width="33%">对应的事件名词<br id="e1ix5" />
</td>
<td id="e1ix6" align="center" width="33%">事件描述<br id="e1ix7" />
</td>
</tr>
<tr id="e1ix8">
<td id="e1ix9" bgcolor="#ffffff" width="33%">addedEffect<br id="e1ix10" />
</td>
<td id="e1ix11" bgcolor="#ffffff" width="33%">added<br id="e1ix12" />
</td>
<td id="e1ix13" bgcolor="#ffffff" width="33%">当被添加到容器中时触发<br id="e1ix14" />
</td>
</tr>
<tr id="e1ix15">
<td id="e1ix16" bgcolor="#ffffff" width="33%">createCompleteEffect<br id="e1ix17" />
</td>
<td id="e1ix18" bgcolor="#ffffff" width="33%">createComplete</td>
<td id="e1ix20" bgcolor="#ffffff" width="33%">当组件完成绘制时触发</td>
</tr>
<tr id="e1ix22">
<td id="e1ix23" bgcolor="#ffffff" width="33%">removedEffect</td>
<td id="e1ix25" bgcolor="#ffffff" width="33%">removed</td>
<td id="e1ix27" bgcolor="#ffffff" width="33%">当组件从容器中删除时触发</td>
</tr>
<tr id="e1ix29">
<td id="e1ix30" bgcolor="#ffffff" width="33%">focusInEffect</td>
<td id="e1ix32" bgcolor="#ffffff" width="33%">focusIn</td>
<td id="e1ix34" bgcolor="#ffffff" width="33%">当组件获得焦点时触发</td>
</tr>
<tr id="e1ix36">
<td id="e1ix37" bgcolor="#ffffff" width="33%">focusOutEffect</td>
<td id="e1ix39" bgcolor="#ffffff" width="33%">focusOut</td>
<td id="e1ix41" bgcolor="#ffffff" width="33%">当组件失去焦点时触发</td>
</tr>
<tr id="e1ix43">
<td id="e1ix44" bgcolor="#ffffff" width="33%">hideEffect</td>
<td id="e1ix46" bgcolor="#ffffff" width="33%">hide</td>
<td id="e1ix48" bgcolor="#ffffff" width="33%">当组件变成不可见时触发</td>
</tr>
<tr id="e1ix50">
<td id="e1ix51" bgcolor="#ffffff" width="33%">showEffect</td>
<td id="e1ix53" bgcolor="#ffffff" width="33%">show</td>
<td id="e1ix55" bgcolor="#ffffff" width="33%">当组件变成可见时触发</td>
</tr>
<tr id="e1ix57">
<td id="e1ix58" bgcolor="#ffffff" width="33%">mouseDownEffect</td>
<td id="e1ix60" bgcolor="#ffffff" width="33%">mouseDown</td>
<td id="e1ix62" bgcolor="#ffffff" width="33%">当鼠标在组件上按下时触发</td>
</tr>
<tr id="e1ix64">
<td id="e1ix65" bgcolor="#ffffff" width="33%">mouseUpEffect</td>
<td id="e1ix67" bgcolor="#ffffff" width="33%">mouseUp</td>
<td id="e1ix69" bgcolor="#ffffff" width="33%">当鼠标在组件上松开时触发</td>
</tr>
<tr id="e1ix71">
<td id="e1ix72" bgcolor="#ffffff" width="33%">rollOutEffect</td>
<td id="e1ix74" bgcolor="#ffffff" width="33%">rollOut</td>
<td id="e1ix76" bgcolor="#ffffff" width="33%">当鼠标在组件上移开时触发</td>
</tr>
<tr id="e1ix78">
<td id="e1ix79" bgcolor="#ffffff" width="33%">rollOverEffect</td>
<td id="e1ix81" bgcolor="#ffffff" width="33%">rollOver</td>
<td id="e1ix83" bgcolor="#ffffff" width="33%">当鼠标移到组件上时触发</td>
</tr>
<tr id="e1ix85">
<td id="e1ix86" bgcolor="#ffffff" width="33%">moveEffect</td>
<td id="e1ix88" bgcolor="#ffffff" width="33%">move</td>
<td id="e1ix90" bgcolor="#ffffff" width="33%">当组件被移动时触发</td>
</tr>
<tr id="e1ix92" bgcolor="#ffffff">
<td id="e1ix93" width="33%">resizeEffect</td>
<td id="e1ix95" width="33%">resize</td>
<td id="e1ix97" width="33%">当组件大小改变时触发</td>
</tr>
</tbody>
</table>
</div>
<br id="yi-t" />
所有的动画效果都是Effcet 类的子类，位于 mx.Effects 包中：<br id="e_tr" />
<br id="h7ia2" />
<div id="ng0v">
<table class="zeroBorder" cellspacing="1" border="0" id="wo77" bgcolor="#444444" width="608" cellpadding="3" style="height: 443px;">
<tbody id="ng0v0">
<tr id="ng0v1" align="center" bgcolor="#eeeeee">
<td id="ng0v2" align="center">Effect 名称<br id="ng0v3" />
</td>
<td id="ng0v4" align="center" width="50%">动画效果描述<br id="ng0v5" />
</td>
</tr>
<tr id="ng0v6">
<td id="ng0v7" bgcolor="#ffffff" width="20%">AnimateProperty<br id="ng0v8" />
</td>
<td id="ng0v9" bgcolor="#ffffff" width="50%">针对组件的一个以数字计算的属性，比如长度，<br id="zxl4" />
按给定的起始值逐渐改变属性的大小。<br id="ng0v10" />
</td>
</tr>
<tr id="ng0v11">
<td id="ng0v12" bgcolor="#ffffff" width="20%">Blur<br id="ng0v13" />
</td>
<td id="ng0v14" bgcolor="#ffffff" width="50%">模糊效果。可以让组件变得模糊，核心由 BlurFilter 滤镜完成。<br id="xp05" />
当对组件使用了该效果，不可再使用 Blur 滤镜和其他模糊效果。<br id="ng0v15" />
</td>
</tr>
<tr id="sgez" bgcolor="#ffffff">
<td id="sgez0" bgcolor="#ffffff" width="20%">Fade<br id="sgez1" />
</td>
<td id="sgez2" valign="top">淡入淡出效果。<br id="h1c5" />
注意：当目标对象中包括文字时，必须使用嵌入字体。<br id="sgez3" />
</td>
</tr>
<tr id="ng0v16">
<td id="ng0v17" bgcolor="#ffffff" width="20%">Dissolve<br id="ng0v18" />
</td>
<td id="ng0v19" bgcolor="#ffffff" width="50%">溶解效果，主要是在目标对象上增加覆盖层，改变覆盖层的透明度，达到让目标消失或出现的效果。<br id="ne-q" />
和 Fade 效果相比，它可以设置覆盖层的颜色。<br id="ne-q0" />
注意：当目标对象中包括文字时，必须使用嵌入字体。<br id="ng0v20" />
</td>
</tr>
<tr id="ng0v21">
<td id="ng0v22" bgcolor="#ffffff" width="20%">Glow<br id="ng0v23" />
</td>
<td id="ng0v24" bgcolor="#ffffff" width="50%">发光效果，使用了GlowFilter 滤镜。<br id="cndq" />
当对组件使用了该效果，不可再使用GlowFilter 滤镜和其他发光效果。<br id="zn1y" />
</td>
</tr>
<tr id="ng0v26">
<td id="ng0v27" bgcolor="#ffffff" width="20%">Iris<br id="ng0v28" />
</td>
<td id="ng0v29" bgcolor="#ffffff" width="50%">彩虹效果，组件以矩形方式，从中心放大或缩小到中心。<br id="zn1y0" />
属于遮罩效果。<br id="zn1y1" />
</td>
</tr>
<tr id="ng0v31">
<td id="ng0v32" bgcolor="#ffffff" width="20%">Move<br id="ng0v33" />
</td>
<td id="ng0v34" bgcolor="#ffffff" width="50%">移动效果，移动组件的坐标，只有当组件位于支持绝对定位的容器中时才有效。<br id="ng0v35" />
</td>
</tr>
<tr id="ng0v36">
<td id="ng0v37" bgcolor="#ffffff" width="20%">Pause<br id="ng0v38" />
</td>
<td id="ng0v39" bgcolor="#ffffff" width="50%">停止，什么都不改变，没有动画。<br id="mydh" />
一般用于复合动画效果中，用来分割前后两个动画。<br id="ng0v40" />
</td>
</tr>
<tr id="ng0v41">
<td id="ng0v42" bgcolor="#ffffff" width="20%">Resize<br id="ng0v43" />
</td>
<td id="ng0v44" bgcolor="#ffffff" width="50%">尺寸调整效果，改变组件的长和宽。<br id="mydh0" />
当改变组件的长和宽时，处于同一个容器的其他组件的大小也可能会相应改变，如果该容器使用了绝对定位则不会发生这种情况。<br id="ng0v45" />
</td>
</tr>
<tr id="ng0v46">
<td id="ng0v47" bgcolor="#ffffff" width="20%">Rotate<br id="ng0v48" />
</td>
<td id="ng0v49" bgcolor="#ffffff" width="50%">旋转效果。<br id="ng0v50" />
</td>
</tr>
<tr id="ng0v51">
<td id="ng0v52" bgcolor="#ffffff" width="20%">SoundEffect<br id="ng0v53" />
</td>
<td id="ng0v54" bgcolor="#ffffff" width="50%">注意：当目标对象中包括文字时，必须使用嵌入字体。</td>
</tr>
<tr id="ng0v56">
<td id="ng0v57" bgcolor="#ffffff" width="20%">WipeLeft<br id="wpxt" />
WipeRight<br id="wpxt0" />
WipeUp<br id="wpxt1" />
WipeDown<br id="ng0v58" />
</td>
<td id="ng0v59" bgcolor="#ffffff" width="50%">擦除效果，属于遮罩效果。<br id="k:5l" />
对应不同方向。<br id="ng0v60" />
</td>
</tr>
<tr id="ng0v61">
<td id="ng0v62" bgcolor="#ffffff" width="20%">Zoom<br id="ng0v63" />
</td>
<td id="ng0v64" bgcolor="#ffffff" width="50%">放缩效果，以组件为中心进行放缩。<br id="ng0v65" />
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p><br id="axlm0" />
<strong id="zasj6">6.2.2 为组件添加行为--监听动画的执行</strong>
</p>
<p style="padding-left: 30px;">&lt;mx:Iris id= &quot;myIris&quot; effectStart=&quot;effectStartHandler()&quot; effectEnd=&quot;effectEndHandler()&quot; /&gt;<br id="fjht" />
effectStart 和 effectEnd 是动画效果共有的事件，分别在动画的开始和结束时被激发。<br id="vkzx" />
<br id="e.1y" />
&lt;mx:WipeRight id= &quot;myWipe2&quot; repeatCount=&quot;2&quot; repeatDelay=&quot;500&quot;/&gt;<br id="e.1y0" />
repeatCount 和 repeatDelay 也是共有属性，分别表示动画播放的次数和每次都间隔时间<br id="e.1y1" />
</p>
<pre name="code" class="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot;
     creationComplete=&quot;initApp()&quot;&gt;   
    &lt;mx:Style source=&quot;style.css&quot; /&gt;   
    &lt;mx:Script&gt;
        &lt;![CDATA[           
            internal function effectStartHandler():void{
                tip_txt.text = &quot;提示信息：动画开始了&quot;;
            }
            internal function effectEndHandler():void{
                tip_txt.text = &quot;提示信息：动画结束了&quot;;
            }
        ]]&gt;
    &lt;/mx:Script&gt;
    &lt;mx:ApplicationControlBar dock=&quot;true&quot;&gt;
        &lt;mx:Label id=&quot;tip_txt&quot; text=&quot;提示信息：&quot; width=&quot;219&quot; styleName=&quot;label&quot;/&gt;
    &lt;/mx:ApplicationControlBar&gt;
   
    &lt;mx:Iris id= &quot;myIris&quot; effectStart=&quot;effectStartHandler()&quot; effectEnd=&quot;effectEndHandler()&quot; /&gt;
    &lt;mx:WipeLeft id= &quot;myWipe&quot; /&gt;
    &lt;mx:WipeRight id= &quot;myWipe2&quot; repeatCount=&quot;2&quot; repeatDelay=&quot;500&quot;/&gt;
   
    &lt;mx:Image id=&quot;image&quot; x=&quot;35&quot; y=&quot;43&quot; source=&quot;tree.jpg&quot; showEffect=&quot;myIris&quot; hideEffect=&quot;myIris&quot;/&gt;
    &lt;mx:Image id=&quot;image2&quot; x=&quot;170&quot; y=&quot;43&quot; source=&quot;tree.jpg&quot; showEffect=&quot;myWipe&quot; hideEffect=&quot;myWipe2&quot;/&gt;
    &lt;mx:Button label=&quot;改变图片&quot;  x=&quot;37&quot; y=&quot;153&quot; click=&quot;image.visible = image2.visible= !image.visible&quot;/&gt;
   
&lt;/mx:Application&gt;</pre>
&nbsp;
<p style="padding-left: 30px;"><br id="z5.3" />
可以通过CSS样式来设定组件的行为：<br id="z5.30" />
</p>
<pre name="code" class="xml">&lt;mx:Style&gt;
        .image{
            showEffect:    myIris;
            hideEffect:    myIris;
        }
        .image2{
            showEffect:    myWipe2;
            hideEffect:    myWipe;
        }
    &lt;/mx:Style&gt;

&lt;mx:Image id=&quot;image&quot; x=&quot;35&quot; y=&quot;43&quot; source=&quot;tree.jpg&quot; styleName=&quot;image&quot;/&gt;
&lt;mx:Image id=&quot;image2&quot; x=&quot;170&quot; y=&quot;43&quot; source=&quot;tree.jpg&quot; styleName=&quot;image2&quot;/&gt;</pre>
&nbsp;
<p style="padding-left: 30px;"><br id="e.:j" />
或者通过setStyle 来设置样式：<br id="e.:j0" />
</p>
<pre name="code" class="xml">&lt;mx:Script&gt;
        &lt;![CDATA[
             internal function initApp():void{
                image.setStyle(&quot;showEffect&quot;,myIris);
                image.setStyle(&quot;hideEffect&quot;,myIris);
                image2.setStyle(&quot;showEffect&quot;,myWipe2);
                image2.setStyle(&quot;hideEffect&quot;,myWipe);
            }
        ]]&gt;
&lt;/mx:Script&gt;

&lt;mx:Image id=&quot;image&quot; x=&quot;35&quot; y=&quot;43&quot; source=&quot;tree.jpg“/&gt;
&lt;mx:Image id=&quot;image2&quot; x=&quot;170&quot; y=&quot;43&quot; source=&quot;tree.jpg&quot;/&gt;</pre>
&nbsp;
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/228827#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Aug 2008 01:30:12 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228827</link>
        <guid>http://www.javaeye.com/topic/228827</guid>
      </item>
      <item>
        <title>Flex PureMVC 简单分析</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaoy.javaeye.com">xiaoY</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228512" style="color:red;">http://www.javaeye.com/topic/228512</a>&nbsp;
          发表时间: 2008年08月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          项目需要，对PureMVC进行了一些研究， 分析了一下结构和流程，贴出来希望大家指正错误。<br /><br />1结构<br /><br /><img src="http://i3.6.cn/cvbnm/a5/bb/9d/b0045f3a06a19691e713e8f6f85ccd90.jpg" /> <br /><br />  总的来说是把传统的MVC三层，利用Observer和Command模式进行了解耦<br />View、Control、Model也细化成：UI、Mediator、Command、ModelProxy、Model。另外ApplicationFacade负责配置模块之间的映射关系和初始化<br /><br />2流程<br /><br />蓝色箭头：表示初始化时做的注册、映射等操作<br />黑色箭头：表示职责<br />红色箭头：一个用户操作产生后的代码流程。<br /><br /><br /><img src="http://i3.6.cn/cvbnm/14/a6/1d/ede8876f6be85111ccf6001c9bafea22.jpg" /> <br /><br />  A 在视图和控制层之间，利用Flex自带的Event机制，通过Dispatch和Listener实现解耦。 <br /><br />Detail：UI为一个MXML，并对应一个Mediator，可以称为中介。UI中的组件只负责通过 click=" dispatchEvent(new Event(CREATE, true))" 的方式抛出事件。<br /> Mediator 为UI中抛出的各个事件注册并实现监听函数。<br /> <br />B 在控制层和model（Service）层之间，利用PureMVC自己实现的Notification机制，发送出Notification，映射到Command执行业务代码，实现解耦。<br /><br />Detail： 视图对应的Mediator接收到视图抛出的event后，进行预处理，将数据包装成Notification，调用PureMVC的Notification接口将通知发送出去，每个Notification都会通过配置，映射到Command。 Command执行过程中可以调用ModelProxy（实体代理）中的Service。ModelProxy中的Service负责与后台通信（调用后台RemoteObject或者发送HTTP Service等）并维护Model。异步返回结果会调用Command中的Result或Fault方法。此时Command可以继续发送Notification启动下一个Command。 <br />另外一个比较关键的环节是，对于每个Notification，PureMVC不仅会映射到Command并执行，而且Mediator中也可以通过实现handleNotification接口来接收该通知并进行处理。<br /><br /><br />另外，关于项目的初始化， 过程在这里单独描述一下，因为它也是利用这个流程。 项目的Applicaiton MXML作为程序入口，需要产生一个Application Facade实例，产生的过程中ApplicationFacade会完成Notification和Command的映射，然后Application MXML发送一个“Initialize”之类的初始化Notification，通过刚完成的映射，一个初始化命令会产生并执行（InitAppCommand），在这个命令中可以进行系统初始化操作，以及完成UI和Mediator的映射。<br /><br /><br />总结：<br />具体的过程和以往的MVC解耦方法类似，都是通过观察者模式+命令模式，也有点像Eclipse插件开发的GEF开发。<br /><br />其中Mediator作为视图的中介， 在视图和控制的解耦中起到比较关键的作用。 而且handleNotification的接口设计也很到位。根据分析的几个项目代码，直接控制UI显示的代码大部分是在这个接口中实现。 也就是将Control分成了两种，UI相关的Control（Mediator负责），和业务相关的Control（Command负责）。这样各部分职责更加清晰。<br /><br />另外Mediator控制UI显示也提倡通过维护Bindable数据来实现。<br /><br /><br />至于缺点的话，有一点是很明显的， 那就是配置映射关系的代码。 这里没有贴出映射代码，但是看到这里大家应该也看出来PureMVC的流程是很依赖映射关系的<br />1 UI和Mediator的映射（InitAppCommand中）<br />2 UI抛出的Event和Mediator的监听函数映射（Mediator中）<br />3 Notification和Command的映射。（ApplicaitonFacade中）<br /><br />这三种配置必然会随着项目的规模而膨胀。需要细心控制和维护。<br /><br />另外使用Notification机制总有种兜圈子的感觉， 虽然模块划分更清晰，功能职责更细化，但一些本来简单的逻辑也会带出自己的Notification和Command，Command的粒度问题也需要考虑。
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/228512#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Aug 2008 20:41:32 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228512</link>
        <guid>http://www.javaeye.com/topic/228512</guid>
      </item>
      <item>
        <title>修改EditorGridPanel让它支持Lookup效果</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lidg.javaeye.com">lidg</a>&nbsp;
          链接：<a href="http://www.javaeye.com/topic/228370" style="color:red;">http://www.javaeye.com/topic/228370</a>&nbsp;
          发表时间: 2008年08月15日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          记得Dephi里有一个叫Lookup效果的Grid（不知道是不是这种叫法），就是如何在Grid中显示或编辑代码数据项，下面就是Ext的实现<br />希望对有这种需求的同学有所帮助。<br />一、重写Ext.grid.GridEditor让Editor控件获得Grid的当前行数据，代码如下，大家可以对照原来Ext.grid.GridEditor的源码<br /><pre name="code" class="java">
Ext.grid.GridEditor = function(field, config){
    Ext.grid.GridEditor.superclass.constructor.call(this, field, config);
    field.monitorTab = false;
};

Ext.extend(Ext.grid.GridEditor, Ext.Editor, {
    alignment: "tl-tl",
    autoSize: "width",
    hideEl : false,
    cls: "x-small-editor x-grid-editor",
    shim:false,
    shadow:false,
    //从Editor.js中拷贝过来
    startEdit : function(el, value){
        if(this.editing){
            this.completeEdit();
        }
        this.boundEl = Ext.get(el);
        var v = value !== undefined ? value : this.boundEl.dom.innerHTML;
        if(!this.rendered){
            this.render(this.parentEl || document.body);
        }
        if(this.fireEvent("beforestartedit", this, this.boundEl, v) === false){
            return;
        }
        this.startValue = v;
        this.field.record = this.record;//就加入这一行，让field中获得当前数据行
        this.field.setValue(v);
        this.doAutoSize();
        this.el.alignTo(this.boundEl, this.alignment);
        this.editing = true;
        this.show();
    }
});
</pre><br />二、继承Ext.form.ComboBox，让combo在设置值时把代码值写到Grid当前行的代码数据项中：<br /><pre name="code" class="java">
Ext.form.LookupComboBox = Ext.extend(Ext.form.ComboBox, {
setValue:function (v) {
	var text = v;
	var lookupValue;
	//增加的代码
	if (this.codeField) {
		var r = this.findRecord(this.displayField, v);
		if (r) {
			lookupValue = r.data[this.codeField];
		} else {
			if (this.valueNotFoundText !== undefined) {
				lookupValue = this.valueNotFoundText;
			}
		}
	}
	if (this.record&&lookupValue) {
		this.record.set(this.lookup, lookupValue);//把代码值写到Grid当前行数据中的代码项目字段
	}
	//增加的代码 --end
	this.lastSelectionText = text;
        if(this.hiddenField){
            this.hiddenField.value = v;
        }
        Ext.form.ComboBox.superclass.setValue.call(this, text);
        this.value = v;
}});
</pre><br />三、使用:如下代码，附件有完整的例子，下载解压到ext的examples\grid文件夹中可以运行.<br /><pre name="code" class="java">
//查帐信息
var itemTypeStore = new Ext.data.SimpleStore({
        fields: ['code','name'],
        data : [['100','流动资产'],['101','固定资产']]
    });
var insureModeStore = new Ext.data.SimpleStore({
        fields: ['code','name'],
        data : [['100','账面原值'],['101','原值加成'],['102','账面余额'],['103','余额加成'],['104','清单'],['105','估价'],['106','账面净值'],['107','其他']]
 	});
var currencySystemStore = new Ext.data.SimpleStore({
        fields: ['code','name'],
        data : [['0110001','美元'],['0110002','英镑'],['0110003','港币'],['0110004','人民币']]	
 	}); 	    
   
var Plant = Ext.data.Record.create([
        {name:'id',type:'int'},
		{name:'surveyId',type:'int'},
		{name:'itemType',type:'string'},
		{name:'itemName',type:'string'},
		{name:'insureMode',type:'string'},
		{name:'currencySystem',type:'string'},
		{name:'insuredAmount',type:'float'},
		{name:'spotPrice',type:'float'},
		{name:'desc',type:'string'}
      ]); 
var auditReader = new Ext.data.JsonReader({
        idProperty:'id',
        fields: [
									{name:'id',type:'int'},
									{name:'surveyId',type:'int'},
										'itemType','itemName','insureMode','currencySystem','desc',
										'insureModeName','itemTypeName','currencySystemName',
									{name:'insuredAmount',type:'float'},
									{name:'spotPrice',type:'float'},
									{name:'inAccountTime',type:'date',format:'Y-m-d H:i'}
		]
    });         

var auditStore = new Ext.data.Store({
				data: xg.dummyData,
				reader: reader,
				remoteSort: true
			});        
var auditsm = new xg.RowNumberer();
var auditcm = new xg.ColumnModel([
		auditsm,
		{id:'id',hidden: true,dataIndex:'id',sortable: false},
		{header:'项目类型代码',hidden:true,dataIndex:'itemType',sortable: false},
		//下面是代码的lookup字段，
		{header: '项目类型', width: 100,dataIndex: 'itemTypeName',sortable: false,
		 renderer: function(v, params, record){
		 //根据项目类型字段的值找代码数据中它的应名称，并显示出来,就可以实现lookup效果了
			return findRecordValue(itemTypeStore,'code',record.data['itemType'],'name');
		}, 
		//加入LookupComboBox，实现lookup的编辑效果
		 editor: new Ext.form.LookupComboBox({
        			store: itemTypeStore,
        			codeField:'code',
        			displayField:'name',
        			lookup:'itemType',
        			typeAhead: true,
        			mode: 'local',
        			triggerAction: 'all',
        			emptyText:'--请选择--',
        			selectOnFocus:true
    			}) 
		 },
		{header: '项目名称', width: 100,dataIndex: 'itemName',sortable: false,
		 editor: new Ext.form.TextField({
                   allowBlank: false
                })
		},
		{header: '投保方式', width: 100,dataIndex: 'insureModeName',sortable: false,
		renderer: function(v, params, record){
			return findRecordValue(insureModeStore,'code',record.data['insureMode'],'name');
		},
		 editor: new Ext.form.LookupComboBox({
        			store: insureModeStore,
        			codeField:'code',
        			displayField:'name',
        			lookup:'insureMode',
        			typeAhead: true,
        			mode: 'local',
        			triggerAction: 'all',
        			emptyText:'--请选择--',
        			selectOnFocus:true
    			})
		},
		{header:'投保方式代码',hidden: true,dataIndex:'insureMode',sortable: false},
		{header: '投保时金额',renderer: Ext.util.Format.money,width: 100,dataIndex: 'insuredAmount',sortable: false,
		 editor: new Ext.form.NumberField({
                    allowBlank: false,
                    allowNegative: false,
                    style: 'text-align:left'
                })
		},
		{header: '出险时金额',renderer: Ext.util.Format.money,width: 80,dataIndex:'spotPrice',sortable: false,
		 editor: new Ext.form.NumberField({
                    allowBlank: false,
                    allowNegative: false,
                    style: 'text-align:left'
                })
		},
		{header:'项目币种代码',hidden:true,dataIndex:'currencySystem',sortable:false},
		{header: '项目币种', width: 60,dataIndex:'currencySystemName',sortable: false,
		renderer: function(v, params, record){
			return findRecordValue(currencySystemStore,'code',record.data['currencySystem'],'name');
		},
		 editor: new Ext.form.LookupComboBox({
        			store: currencySystemStore,
        			codeField:'code',
        			displayField:'name',
        			lookup:'currencySystem',
        			typeAhead: true,
        			mode: 'local',
        			triggerAction: 'all',
        			emptyText:'--请选择--',
        			selectOnFocus:true
    			})
		},
		{header: '入帐时间', width: 90,dataIndex:'inAccountTime',sortable: false,
		 renderer: Ext.util.Format.dateRenderer('Y-m-d H:i'),
		 editor: new Ext.form.DateField({format:'Y-m-d H:i',menu:new DatetimeMenu()})
		},
		{header:'说明',width:120,dataIndex:'desc',sortable: false,
		 editor:new Ext.form.TextArea()
		}
		]);
auditcm.defaultSortable = true;
var auditInfoGrid = new xg.EditorGridPanel({
	title:'查帐信息',
	iconCls:'icon-grid',
	store: auditStore,
    cm: auditcm,
    loadMask: true,
    bodyStyle:'width:100%',
    border:false,
    frame:true,
    clicksToEdit:1,
    renderTo: document.body,
    viewConfig: {forceFit:true},
        tbar:[{text:'增加',tooltip:'增加查帐信息',iconCls:'add',handler : function(){
        		var plan = new Plant({id:0,surveyId:20,itemType:'',itemName:'',insureMode:'',currencySystem:''});
        		auditStore.commitChanges();
        		var count = auditStore.getCount(); 
        		auditStore.insert(count,plan);
        		auditInfoGrid.startEditing(count, 0);
        		}
        	 }, 
        	'-', 
        	{text:'删除',tooltip:'删除查帐信息',iconCls:'remove',handler:function(){alert(Ext.util.Format.date(auditStore.getAt(0).data.inAccountTime,'Y-m-d H:i'));}}
        ]
});
auditStore.load();
Ext.grid.dummyData = [{id:1,surveyId:20,itemType:'100',itemName:'电脑设备',desc:'革命同志',insureMode:'100',currencySystem:'0110004',insuredAmount:1000.00,spotPrice:8900.00,inAccountTime:'Fri Aug 15 11:18:07 CST 2008'}];
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://firecloudhawk.javaeye.com/topic/228370#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Aug 2008 14:19:53 +0800</pubDate>
        <link>http://www.javaeye.com/topic/228370</link>
        <guid>http://www.javaeye.com/topic/228370</guid>
      </item>
  </channel>
</rss>
