﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-张昊</title><link>http://www.blogjava.net/hao-zhang-hi/</link><description>J-Hi(http://www.j-hi.net)</description><language>zh-cn</language><lastBuildDate>Mon, 27 Apr 2026 10:22:16 GMT</lastBuildDate><pubDate>Mon, 27 Apr 2026 10:22:16 GMT</pubDate><ttl>60</ttl><item><title>J-Hi线下交流--实况</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/09/16/358842.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Fri, 16 Sep 2011 15:48:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/09/16/358842.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/358842.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/09/16/358842.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/358842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/358842.html</trackback:ping><description><![CDATA[<div><p><a target="_blank" href="http://developer.51cto.com/developer/51cto-salon-13/" data-mce-href="http://developer.51cto.com/developer/51cto-salon-13/">http://developer.51cto.com/developer/51cto-salon-13/</a><br data-mce-bogus="1" /></p><div><table mceitemtable="" data-mce-style="width: 1px; height: 228px;" background="skin/banner.jpg" border="0" cellpadding="0" cellspacing="0" height="230" width="4"><tbody><tr><td height="200" valign="bottom"><br /> </td></tr><tr><td height="28"><br /> </td></tr></tbody></table></div><table mceitemtable="" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><img src="http://developer.51cto.com/developer/51cto-salon-13/skin/mt.gif" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/skin/mt.gif" alt="" height="12" width="960" /></td></tr><tr><td><table style="width: 100%;" data-mce-style="width: 100%;" align="center" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="top" width="36%"><table style="width: 320px;" data-mce-style="width: 320px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td width="290"><p id="player1"><a title="51CTO技术沙龙视频点播"><img src="http://images.51cto.com/files/uploadimg/20110905/145407295.jpg" data-mce-src="http://images.51cto.com/files/uploadimg/20110905/145407295.jpg" alt="" height="240" width="320" /></a><br data-mce-bogus="1" /></p></td></tr><tr><td height="12"><br /></td></tr></tbody></table><table style="width: 320px;" data-mce-style="width: 320px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td width="27"><img src="http://developer.51cto.com/developer/51cto-salon-13/skin/t1.gif" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/skin/t1.gif" alt="" height="19" width="19" /></td><td width="293">视频点播</td></tr><tr><td colspan="2"><a>《Java快速开发的分析与探索》[上](张昊）</a><br /> <a>《Java快速开发的分析与探索》[下](张昊）<br /> </a><a>《Java快速开发平台使用》（肖金华）</a><br /> <a> 用户交流与问答环节</a><br data-mce-bogus="1" /></td></tr></tbody></table><table style="width: 320px;" data-mce-style="width: 320px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td colspan="2" height="12"><br /></td></tr><tr><td width="27"><img src="http://developer.51cto.com/developer/51cto-salon-13/skin/t2.gif" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/skin/t2.gif" alt="" /></td><td width="293">推荐阅读</td></tr><tr><td colspan="2" height="12"><br /></td></tr><tr><td colspan="2"><table style="width: 320px;" data-mce-style="width: 320px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td width="82"><a href="http://developer.51cto.com/art/201106/269677.htm" data-mce-href="http://developer.51cto.com/art/201106/269677.htm"><img src="http://images.51cto.com/files/uploadimg/20110822/135452578.jpg" mr10="" data-mce-src="http://images.51cto.com/files/uploadimg/20110822/135452578.jpg" alt="" border="0" height="80" width="100" /></a><br data-mce-bogus="1" /></td><td valign="top" width="238"><h4><a target="_blank" href="http://developer.51cto.com/art/201106/269677.htm" data-mce-href="http://developer.51cto.com/art/201106/269677.htm">51CTO电子杂志《开发月刊》</a><br data-mce-bogus="1" /></h4><p gray="" pt5="">51CTO开发频道推出《开发月刊》电子杂志。主要内容涵盖Java、.NET、WEB开发、数据库和移动开发等等。从技术细节到项目管理，方方面面为开发者服务。</p></td></tr></tbody></table></td></tr><tr><td colspan="2"><br /></td></tr></tbody></table><table style="width: 320px;" data-mce-style="width: 320px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td colspan="2" height="10"><br /></td></tr><tr><td width="27"><img src="http://developer.51cto.com/developer/51cto-salon-13/skin/t3.gif" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/skin/t3.gif" alt="" /></td><td width="293">往期回顾</td></tr><tr><td colspan="2">&nbsp;</td></tr><tr><td colspan="2"><a target="_blank" href="http://news.51cto.com/exp/51cto-salon-12/" data-mce-href="http://news.51cto.com/exp/51cto-salon-12/">51CTO技术沙龙之IDC挑选运维经验谈</a><br />  <a target="_blank" href="http://netsecurity.51cto.com/secu/51cto-salon-11/" data-mce-href="http://netsecurity.51cto.com/secu/51cto-salon-11/">51CTO技术沙龙之掌握网络流量分析与系统监控</a><br />  <a target="_blank" href="http://os.51cto.com/exp/51cto-salon-10/" data-mce-href="http://os.51cto.com/exp/51cto-salon-10/">51CTO技术沙龙之企业服务器安全攻与防 </a><br />  <a target="_blank" href="http://os.51cto.com/exp/51cto-salon-09/" data-mce-href="http://os.51cto.com/exp/51cto-salon-09/">51CTO技术沙龙之Linux系统安全</a><br />  <a target="_blank" href="http://netsecurity.51cto.com/secu/51cto-salon-08/" data-mce-href="http://netsecurity.51cto.com/secu/51cto-salon-08/">51CTO技术沙龙之解析中小企业网络运维</a><br />  <a target="_blank" href="http://developer.51cto.com/developer/51cto-salon-07/" data-mce-href="http://developer.51cto.com/developer/51cto-salon-07/">51CTO技术沙龙之Web开发前沿技术探索与实战</a><br />    <a target="_blank" href="http://developer.51cto.com/developer/51cto-salon-06/" data-mce-href="http://developer.51cto.com/developer/51cto-salon-06/">51CTO技术沙龙之大型网站PHP开发之道</a><br /> <a target="_blank" href="http://news.51cto.com/exp/51cto-salon-05/" data-mce-href="http://news.51cto.com/exp/51cto-salon-05/">51CTO技术沙龙之 IT技术人，茫茫职业人生路</a><br /> <a target="_blank" href="http://netsecurity.51cto.com/secu/51cto-salon-04/" data-mce-href="http://netsecurity.51cto.com/secu/51cto-salon-04/">51CTO技术沙龙之 如何快速定位黑客攻击</a><br /> <a target="_blank" href="http://netsecurity.51cto.com/secu/51cto-salon-03/" data-mce-href="http://netsecurity.51cto.com/secu/51cto-salon-03/">51CTO技术沙龙之 关于企业安全运维的那些事儿</a><br /> <a target="_blank" href="http://os.51cto.com/exp/51cto-salon-01/" data-mce-href="http://os.51cto.com/exp/51cto-salon-01/">51CTO技术沙龙之 站在业务扩展的角度看Linux运维技术</a><br /> <a target="_blank" href="http://shalong.blog.51cto.com/408375/499011" data-mce-href="http://shalong.blog.51cto.com/408375/499011">51CTO技术沙龙之 从菜鸟到CTO，你的目标需要管理</a><br /> <a target="_blank" href="http://shalong.blog.51cto.com/408375/154383" data-mce-href="http://shalong.blog.51cto.com/408375/154383">51CTO技术沙龙之 两小时成为反挂马达人</a><br /> <a target="_blank" href="http://shalong.blog.51cto.com/408375/143601" data-mce-href="http://shalong.blog.51cto.com/408375/143601">51CTO技术沙龙之 全方位解析虚拟化</a><br /> <a target="_blank" href="http://shalong.blog.51cto.com/408375/109940" data-mce-href="http://shalong.blog.51cto.com/408375/109940">51CTO技术沙龙之 企业基础网络与核心服务搭建</a><br /> <a target="_blank" href="http://shalong.blog.51cto.com/408375/87598" data-mce-href="http://shalong.blog.51cto.com/408375/87598">51CTO技术沙龙之 负载均衡2期</a><br data-mce-bogus="1" /></td></tr></tbody></table></td><td valign="top" width="64%"><table style="width: 600px;" mceitemtable="" data-mce-style="width: 600px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><table style="width: 600px;" mceitemtable="" data-mce-style="width: 600px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="top"><h3>沙龙导读与PPT下载</h3></td></tr><tr><td pr15="" pt15=""><table style="width: 570px;" data-mce-style="width: 570px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td rowspan="2" valign="top" width="41"><img src="http://developer.51cto.com/developer/51cto-salon-13/skin/n1.gif" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/skin/n1.gif" alt="" height="31" width="31" /></td><td lh20="" b="" width="537"><a target="_blank" href="http://developer.51cto.com/art/201109/288993.htm" data-mce-href="http://developer.51cto.com/art/201109/288993.htm">51CTO技术沙龙第十三期总结：Java快速开发之路</a><br data-mce-bogus="1" /></td></tr><tr><td pt10="" lh18="">在2011年9月3日下午51CTO举办的第13期51CTO技术沙龙中，有幸请到Java开源平台&#8212;&#8212;J-Hi的两位创始人张昊老师和肖金华老师。二位讲师分别从理论和实战来为大家介绍J-Hi，打开Java快速开发之路。<a target="_blank" href="http://developer.51cto.com/art/201109/288993.htm" data-mce-href="http://developer.51cto.com/art/201109/288993.htm">查看</a><br data-mce-bogus="1" /></td></tr></tbody></table><table style="width: 570px;" data-mce-style="width: 570px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td rowspan="2" valign="top" width="41"><img src="http://developer.51cto.com/developer/51cto-salon-13/skin/n2.gif" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/skin/n2.gif" alt="" height="31" width="31" /></td><td lh20="" b="" width="537"><a target="_blank" href="http://down.51cto.com/data/245952" data-mce-href="http://down.51cto.com/data/245952">PPT下载：《Java快速开发的分析与探索》（张昊）</a><br data-mce-bogus="1" /></td></tr><tr><td pt10="" lh18="">详细分析快速开发与传统开发方式在开发形式上的差异，两个模式所存在的风险及如何规避这些风险，并对开发效率、成本及开发规范做出对比。最后阐述为什么快速开发将是以后软件开发的趋势。 <a target="_blank" href="http://down.51cto.com/data/245952" data-mce-href="http://down.51cto.com/data/245952">PPT下载</a> | <a target="_blank" href="http://res.51cto.com/flv/51cto-salon-12/1.flv" data-mce-href="http://res.51cto.com/flv/51cto-salon-12/1.flv">视频下载</a><br data-mce-bogus="1" /></td></tr></tbody></table><table style="width: 570px;" data-mce-style="width: 570px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td rowspan="2" valign="top" width="41"><img src="http://developer.51cto.com/developer/51cto-salon-13/skin/n3.gif" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/skin/n3.gif" alt="" height="31" width="31" /></td><td lh20="" b="" width="537">《Java快速开发平台使用》（肖金华）</td></tr><tr><td pt10="" lh18="">主要介绍怎样架构你的互联网应用才能显得不是那么草根，基于弱关系理论的结构化数据存储与程序设计高性能的数据缓冲层让你的数据离CPU再近一些。如何定位应用的性能瓶颈以及系能优化的思路。   <a target="_blank" href="http://res.51cto.com/flv/51cto-salon-12/2.flv" data-mce-href="http://res.51cto.com/flv/51cto-salon-12/2.flv">视频下载</a><br data-mce-bogus="1" /></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td>&nbsp;</td></tr><tr><td><table style="width: 600px;" mceitemtable="" data-mce-style="width: 600px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="top"><h3>本期讲师介绍</h3></td></tr><tr><td><table style="width: 598px;" data-mce-style="width: 598px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td colspan="3" height="20">&nbsp;</td></tr><tr><td width="15">&nbsp;</td><td width="290"><table style="width: 275px;" data-mce-style="width: 275px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td rowspan="2" width="102"><img mr10="" src="http://images.51cto.com/files/uploadimg/20110824/100633729.jpg" data-mce-src="http://images.51cto.com/files/uploadimg/20110824/100633729.jpg" alt="" height="121" width="96" /></td><td pt5="" width="173"><a target="_blank" href="http://new.51cto.com/exp/salon/speaker.html" data-mce-href="http://new.51cto.com/exp/salon/speaker.html">J-Hi快速开发平台团队核心成员 张昊</a><br data-mce-bogus="1" /></td></tr><tr><td lh20="" pt10="" valign="top">软迅博技术发展有限公司首席架构师，开源J-Hi快速开发平台团队核心成员，平台项目的主要发起者与组织者。</td></tr></tbody></table></td><td valign="top" width="293"><table style="width: 275px;" data-mce-style="width: 275px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td rowspan="2" width="102"><img mr10="" src="http://images.51cto.com/files/uploadimg/20110824/132416915.jpg" data-mce-src="http://images.51cto.com/files/uploadimg/20110824/132416915.jpg" alt="" height="121" width="96" /></td><td pt5="" width="173"><a target="_blank" href="http://new.51cto.com/exp/salon/speaker.html" data-mce-href="http://new.51cto.com/exp/salon/speaker.html">软迅博技术发展有限公司项目总监 肖金华</a><br data-mce-bogus="1" /></td></tr><tr><td lh20="" pt10="" valign="top">开源J-Hi快速开发平台团队核心成员，十一年软件开发经验，带领完成过多个大型项目。熟悉保险及电力行业，曾任某IT公司保险业务线架构师。</td></tr></tbody></table></td></tr><tr><td colspan="3" height="35">&nbsp;</td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td>&nbsp;</td></tr><tr><td><table style="width: 600px;" mceitemtable="" data-mce-style="width: 600px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="top" width="509"><h3><a href="http://www.51cto.com/col/35/all.htm#developer" target="_blank" data-mce-href="http://www.51cto.com/col/35/all.htm#developer"><span style="color: #e64135;" data-mce-style="color: #e64135;">相关Java专题</span></a><br data-mce-bogus="1" /></h3></td><td align="right" valign="top" width="89"><div style="padding-top: 12px; padding-right: 10px;" data-mce-style="padding-top: 12px; padding-right: 10px;"><a href="http://www.51cto.com/col/35/all.htm#developer" target="_blank" data-mce-href="http://www.51cto.com/col/35/all.htm#developer"><span style="color: #000000;" data-mce-style="color: #000000;">查看更多&gt;&gt;</span></a></div></td></tr><tr><td colspan="2"><table style="width: 100%;" data-mce-style="width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td height="158" valign="top" width="34%"><div><table style="width: 200px;" data-mce-style="width: 200px;" align="center" border="0"><tbody><tr><td><div align="center"><a href="http://developer.51cto.com/art/201103/250221.htm" target="_blank" data-mce-href="http://developer.51cto.com/art/201103/250221.htm"><img src="http://images.51cto.com/files/uploadimg/20110321/135420506.jpg" data-mce-src="http://images.51cto.com/files/uploadimg/20110321/135420506.jpg" alt="" border="0" width="230" /></a></div></td></tr><tr><td><br /></td></tr></tbody></table><p>51CTO开发频道专访J-Hi快速开发平台团队核心成员张昊先生，向大家讲述J-Hi快速开发平台从创意到研发再到产品的完整脉络和技术领域以及对广大爱好者的一些建议。</p><div blue="" pt5="" unline=""><a target="_blank" href="http://developer.51cto.com/art/201103/250221.htm" data-mce-href="http://developer.51cto.com/art/201103/250221.htm">&#8220;J-Hi&#8221;Java开源平台的生力军 </a></div></div></td><td bgcolor="#f4f4f4" valign="top" width="34%"><div><table style="width: 150px;" data-mce-style="width: 150px;" align="center" border="0"><tbody><tr><td><a href="http://developer.51cto.com/art/201001/175830.htm" target="_blank" data-mce-href="http://developer.51cto.com/art/201001/175830.htm"><img src="http://images.51cto.com/files/uploadimg/20110801/112555734.jpg" data-mce-src="http://images.51cto.com/files/uploadimg/20110801/112555734.jpg" alt="" border="0" width="230" /></a><br data-mce-bogus="1" /></td></tr><tr><td>&nbsp;</td></tr></tbody></table><p>2011年7月7日，甲骨文举行了生活的全球性活动，以庆祝即将到来的Java 7推出。标准版Java SE 7是对Java社区和甲骨文对开发语言和技术持续承诺的一种肯定。</p><div blue="" pt5="" unline=""><a target="_blank" href="http://developer.51cto.com/art/201001/175830.htm" data-mce-href="http://developer.51cto.com/art/201001/175830.htm">Java 7正式发布（附下载）</a></div></div></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td colspan="2"><table style="width: 100%;" mceitemtable="" data-mce-style="width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td valign="top"><h3><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><span style="color: #e64135;" data-mce-style="color: #e64135;">沙龙现场照片</span></a><br data-mce-bogus="1" /></h3></td></tr><tr><td><table style="width: 934px;" data-mce-style="width: 934px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td colspan="2" height="15"><br /></td></tr><tr><td width="15">&nbsp;</td><td width="919"><table style="width: 100%;" data-mce-style="width: 100%;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td><div id="demo" style="overflow: hidden; height: 140px; width: 890px;" data-mce-style="overflow: hidden; height: 140px; width: 890px;"><table style="width: 100%;" data-mce-style="width: 100%;" cellpadding="0" cellspacing="0"><tbody><tr><td id="demo1"><table cellpadding="4" cellspacing="0"><tbody><tr><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/01.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/01.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/02.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/02.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/03.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/03.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/04.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/04.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/05.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/05.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/06.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/06.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/07.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/07.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/08.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/08.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/09.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/09.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td><td>&nbsp;</td><td><a target="_blank" href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943" data-mce-href="http://home.51cto.com/apps/photo/index.php?s=/Index/photo/id/32552/aid/1224/uid/900943"><img src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/10.jpg" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/img/180x120/10.jpg" alt="" border="0" height="120" width="180" /></a><br data-mce-bogus="1" /></td></tr></tbody></table></td><td id="demo2"><br /></td></tr></tbody></table>       <img src="http://developer.51cto.com/developer/51cto-salon-13/pic/t1.JPG" data-mce-src="http://developer.51cto.com/developer/51cto-salon-13/pic/t1.JPG" alt="" border="0" /></div></td></tr></tbody></table></td></tr><tr><td colspan="2" height="15"><br /></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table><p><br /></p></div><img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/358842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-09-16 23:48 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/09/16/358842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一组java快速开发视频 </title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/09/09/358377.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Fri, 09 Sep 2011 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/09/09/358377.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/358377.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/09/09/358377.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/358377.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/358377.html</trackback:ping><description><![CDATA[<div>http://weibo.com/javahi</div><img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/358377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-09-09 16:26 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/09/09/358377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J-Hi Lookup实现级联下拉的效果</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/06/03/351704.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Fri, 03 Jun 2011 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/06/03/351704.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/351704.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/06/03/351704.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/351704.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/351704.html</trackback:ping><description><![CDATA[<br />  <p style="margin-left: 21pt;"><strong><span style="font-family: 宋体;">描述</span></strong><span style="font-family: 宋体;">：在</span>DWZ<span style="font-family: 宋体;">版中</span>lookup<span style="font-family: 宋体;">的处理机制与经典的完全不同，对于</span>lookup<span style="font-family: 宋体;">有两种展现形式，一种是通过点击</span>lookup<span style="font-family: 宋体;">图标弹出对话框后带回选中的值，另一种是通过在文本框中输入相应信息从而实现联机式的查找带回效果。从实现目的来看，无非是让</span>lookup<span style="font-family: 宋体;">的实体的主键值带回到</span>hidden<span style="font-family: 宋体;">的一个元素中，而其它值只是作为显示参考之用，与底层的数据库结构与数据库表无关。一个完整的</span>lookup<span style="font-family: 宋体;">由如下</span>html<span style="font-family: 宋体;">元素构成：</span>1<span style="font-family: 宋体;">）一个</span>hidden<span style="font-family: 宋体;">用于保存带回实体主键的</span>ID<span style="font-family: 宋体;">值；如果要实现缺省的</span>lookup<span style="font-family: 宋体;">过滤或排序可以相应的</span>pageInfo<span style="font-family: 宋体;">的</span>hidden<span style="font-family: 宋体;">元素，具体实现方式的用例参见《</span>HowTo<span style="font-family: 宋体;">手册》；</span>2<span style="font-family: 宋体;">）</span>n<span style="font-family: 宋体;">个</span>text<span style="font-family: 宋体;">用于显示带回的多个数据带回项（<span style="color: red;">注意</span>：因为带回的数据项与数据访问层也就是数据库表无关，因此每个</span>text<span style="font-family: 宋体;">的</span>name<span style="font-family: 宋体;">都有一个</span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">hi_</span></em><span style="font-family: 宋体;">作为前缀）；</span>3<span style="font-family: 宋体;">）一个</span>lookup<span style="font-family: 宋体;">有且只有一个主带回项，只有主带回项的文本框是可编辑的并且只有主带回项会有</span>lookup<span style="font-family: 宋体;">图标也就是</span>html<span style="font-family: 宋体;">的中的</span>a<span style="font-family: 宋体;">元素。</span></p>  <table style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0">  <tbody><tr>   <td style="width: 131.4pt; border: 1pt solid silver; background: none repeat scroll 0% 0% #d9d9d9; padding: 0cm 5.4pt;" valign="top" width="175">   <p align="center"><strong><span style="font-family: 宋体;">扩展属性名</span></strong></p>   </td>   <td colspan="2" style="width: 303.85pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: silver silver silver -moz-use-text-color; background: none repeat scroll 0% 0% #d9d9d9; padding: 0cm 5.4pt;" valign="top" width="405">   <p align="center"><strong><span style="font-family: 宋体;">描</span></strong><strong> </strong><strong><span style="font-family: 宋体;">述</span></strong></p>   </td>  </tr>  <tr>   <td style="width: 131.4pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color silver silver; padding: 0cm 5.4pt;" valign="top" width="175">   <p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">lookupGroup</span></p>   </td>   <td colspan="2" style="width: 303.85pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color silver silver -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="405">   <p><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">组可以理解为当前实体的名字，如果当前</span><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">组件是主实体中，则</span><span style="font-size: 9pt;">lookupGroup</span><span style="font-size: 9pt; font-family: 宋体;">就是实体名，如果当前</span><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">组件在从实体（也就是明细表的</span><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">）中，则</span><span style="font-size: 9pt;">lookupGroup</span><span style="font-size: 9pt; font-family: 宋体;">就是明细的集合属性名</span></p>   </td>  </tr>  <tr>   <td style="width: 131.4pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color silver silver; padding: 0cm 5.4pt;" valign="top" width="175">   <p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">lookupName</span></p>   </td>   <td colspan="2" style="width: 303.85pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color silver silver -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="405">   <p><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">名可以理解为当前</span><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">实体的属性名。从整体的</span><span style="font-size: 9pt;">DWZ</span><span style="font-size: 9pt; font-family: 宋体;">框架来分析，实际上所有的</span><span style="font-size: 9pt;">tab</span><span style="font-size: 9pt; font-family: 宋体;">都在一个</span><span style="font-size: 9pt;">IE</span><span style="font-size: 9pt; font-family: 宋体;">窗口，也就是说</span><span style="font-size: 9pt;">JS</span><span style="font-size: 9pt; font-family: 宋体;">文件在打开浏览器只会加载一次。这就产生了必须要保证每一个</span><span style="font-size: 9pt;">html</span><span style="font-size: 9pt; font-family: 宋体;">元素的唯一性，即使是在不同的</span><span style="font-size: 9pt;">tab</span><span style="font-size: 9pt; font-family: 宋体;">下也是如此。对于</span><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">来说，是通过</span><span style="font-size: 9pt;">lookupGroup+lookupName</span><span style="font-size: 9pt; font-family: 宋体;">来确定元素的唯一性的。</span></p>   </td>  </tr>  <tr>   <td style="width: 131.4pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color silver silver; padding: 0cm 5.4pt;" valign="top" width="175">   <p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">suggestClass</span></p>   </td>   <td rowspan="2" style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color silver silver -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="96">   <p><span style="font-size: 9pt; font-family: 宋体;">主带回项才会有该属性，实现联想查找带回</span></p>   </td>   <td style="width: 231.85pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color silver silver -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="309">   <p><span style="font-size: 9pt; font-family: 宋体;">待</span><span style="font-size: 9pt;">lookup</span><span style="font-size: 9pt; font-family: 宋体;">实体的</span><span style="font-size: 9pt;">POJO</span><span style="font-size: 9pt; font-family: 宋体;">类的全限定名</span></p>   </td>  </tr>  <tr>   <td style="width: 131.4pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color silver silver; padding: 0cm 5.4pt;" valign="top" width="175">   <p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">searchFields</span></p>   </td>   <td style="width: 231.85pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color silver silver -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="309">   <p><span style="font-size: 9pt; font-family: 宋体;">查询过滤的属性名列表，以逗号分隔。例如带回</span><span style="font-size: 9pt;">HiUser</span><span style="font-size: 9pt; font-family: 宋体;">，该属性的值为</span><span style="font-size: 9pt;">&#8221;fullName,userNum&#8221;</span><span style="font-size: 9pt; font-family: 宋体;">，在文本框中</span><span style="font-size: 9pt;">001</span><span style="font-size: 9pt; font-family: 宋体;">则平台会查询姓名或者是编号为</span><span style="font-size: 9pt;">001</span><span style="font-size: 9pt; font-family: 宋体;">的所有用户</span></p>   </td>  </tr>  <tr>   <td style="width: 131.4pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color silver silver; padding: 0cm 5.4pt;" valign="top" width="175">   <p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">callback</span></p>   </td>   <td colspan="2" style="width: 303.85pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color silver silver -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="405">   <p><span style="font-size: 9pt; font-family: 宋体;">回调方法名，在查找带回值后系统会回调该属性的值的方法，以实现您对带回后的特殊处理。例如</span><span style="font-size: 9pt;">callback=fun</span><span style="font-size: 9pt; font-family: 宋体;">，那么在带回值后系统会自动调用</span><span style="font-size: 9pt;">fun</span><span style="font-size: 9pt; font-family: 宋体;">方法，并会自动传入两个参数</span><span style="font-size: 9pt;">fun(json,index)</span><span style="font-size: 9pt; font-family: 宋体;">，其中</span><span style="font-size: 9pt;">json</span><span style="font-size: 9pt; font-family: 宋体;">：是带回的完整</span><span style="font-size: 9pt;">json</span><span style="font-size: 9pt; font-family: 宋体;">对象，</span><span style="font-size: 9pt;">index</span><span style="font-size: 9pt; font-family: 宋体;">：是索引值，主要用于明细的带回时要提供是第几条明细记录</span></p>   </td>  </tr> </tbody></table>  <p>&nbsp;</p>  <p style="margin-left: 21pt;"><strong><span style="font-size: 10pt; font-family: 宋体; color: black;">场景描述</span></strong><span style="font-size: 10pt; font-family: 宋体; color: black;">：一个会员编辑页面要指定该会员所在的省份、城市、地区，要求在选择省份后会自动过滤该省份的城市，地区以此类推。</span></p>  <p style="margin-left: 21pt;" align="center"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/lookup.jpg" width="375" height="319" /></span></p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: 宋体; color: black;">以下所有步骤只是修改</span><em><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">OrganizationEdit.jsp</span></em><span style="font-size: 10pt; font-family: 宋体; color: black;">文件，即可</span></p>  <p style="text-indent: 21pt;"><strong><span style="font-size: 10pt; font-family: 宋体; color: black;">步骤一</span></strong><span style="font-size: 10pt; font-family: 宋体; color: black;">、为省份的主带回项加</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">callback</span><span style="font-size: 10pt; font-family: 宋体; color: black;">回调方法</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">,</span><span style="font-size: 10pt; font-family: 宋体; color: black;">并在实现该</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">js</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法</span></p>  <p style="text-indent: 21pt;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">input</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">type</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"text"</span></em> <span style="color: #7f007f;">class</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"textInput"</span></em> <span style="color: #7f007f;">name</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"organization.hi_province.name"</span></em> <span style="color: #7f007f;">value</span><span style="color: black;">=</span>"<span style="color: black;">${organization.province.name}</span>" <u><span style="color: #7f007f;">callback</span></u><span style="color: black;">=</span><em><span style="color: #2a00ff;">"processProvince" </span></em></span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">function</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> processProvince(json){</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">"pageInfo.province.f_id"</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">).value = json.id;</span></p>  <p style="text-indent: 21pt;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; }&nbsp;//</span><span style="font-size: 10pt; font-family: 宋体; color: black;">该方法的目的是在选择某个省份后将该省份的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">ID</span><span style="font-size: 10pt; font-family: 宋体; color: black;">值放到指定的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">hidden</span><span style="font-size: 10pt; font-family: 宋体; color: black;">元素中</span></p>  <p style="text-indent: 21pt;"><strong><span style="font-size: 10pt; font-family: 宋体; color: black;">步骤二</span></strong><span style="font-size: 10pt; font-family: 宋体; color: black;">、为城市加一个用于过滤的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">hidden</span><span style="font-size: 10pt; font-family: 宋体; color: black;">元素</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">,</span><span style="font-size: 10pt; font-family: 宋体; color: red;">注意</span><span style="font-size: 10pt; font-family: 宋体; color: black;">：</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">processProvince()</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法中的赋值语句就是该</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">hidden</span><span style="font-size: 10pt; font-family: 宋体; color: black;">元素</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span style="font-size: 10pt; font-family: 宋体; color: black;">用于过滤的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">name</span><span style="font-size: 10pt; font-family: 宋体; color: black;">必须与</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">PageInfo</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的具体类相对应；必须要指定</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">lookupGroup</span><span style="font-size: 10pt; font-family: 宋体; color: black;">与</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">lookupName</span></p>  <p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">input</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">type</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"hidden" </span></em><span style="color: #7f007f;">lookupGroup</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"organization"</span></em> <span style="color: #7f007f;">lookupName</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"city"</span></em> <span style="color: #7f007f;">name</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"pageInfo.province.f_id"</span></em> <span style="color: #7f007f;">id</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"pageInfo.province.f_id"</span></em>&nbsp;<span style="color: #7f007f;">value</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">""</span></em><span style="color: teal;">/&gt;</span></span></p>  <p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: 宋体; color: black;">步骤三</span></strong><span style="font-size: 10pt; font-family: 宋体; color: black;">、为城市的主带回项加</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">callback</span><span style="font-size: 10pt; font-family: 宋体; color: black;">回调方法</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">,</span><span style="font-size: 10pt; font-family: 宋体; color: black;">并在实现该</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">js</span><span style="font-size: 10pt; font-family: 宋体; color: black;">方法</span></p>  <p style="text-indent: 21pt;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">input</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">type</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"text"</span></em> <span style="color: #7f007f;">class</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"textInput"</span></em> <span style="color: #7f007f;">name</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"organization.hi_city.name"</span></em> <span style="color: #7f007f;">value</span><span style="color: black;">=</span>"<span style="color: black;">${organization.city.name}</span>"&nbsp;<u><span style="color: #7f007f;">callback</span></u><span style="color: black;">=</span><em><span style="color: #2a00ff;">"processCity"</span></em></span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">function</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> processCity(json){</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">"pageInfo.city.f_id"</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">).value = json.id;</span></p>  <p style="text-indent: 21pt;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></p>  <p style="text-indent: 21pt;"><strong><span style="font-size: 10pt; font-family: 宋体; color: black;">步骤四</span></strong><span style="font-size: 10pt; font-family: 宋体; color: black;">、为地区加一个用于过滤的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">hidden</span><span style="font-size: 10pt; font-family: 宋体; color: black;">元素</span></p>  <p style="text-indent: 21pt;"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">input</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">type</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"hidden"</span></em> <span style="color: #7f007f;">name</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"pageInfo.city.f_id"</span></em> <span style="color: #7f007f;">id</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"pageInfo.city.f_id"</span></em>&nbsp;<u><span style="color: #7f007f;">lookupGroup</span></u><span style="color: black;">=</span><em><span style="color: #2a00ff;">"organization"</span></em> <u><span style="color: #7f007f;">lookupName</span></u><span style="color: black;">=</span><em><span style="color: #2a00ff;">"region"</span></em> <span style="color: #7f007f;">value</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">""</span></em><span style="color: teal;">/&gt;</span></span></p>  <p style="text-indent: 21pt;"><strong><span style="font-size: 10pt; font-family: 宋体; color: black;">总结</span></strong><span style="font-size: 10pt; font-family: 宋体; color: black;">：级联下拉实际上是</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">lookup</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的一个变种形式，主要的思想是为你要级联的下拉的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">lookup</span><span style="font-size: 10pt; font-family: 宋体; color: black;">加入过滤项，例如在城市加一个省份的过滤项，在选择省份时后，会通过回调方法将这个过滤项的值存到该过滤项中。这样逐级过滤就实现了级联下拉的效果</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.</span></p>  <div><a href="../../Files/hao-zhang-hi/OrganizationEdit.rar">/Files/hao-zhang-hi/OrganizationEdit.rar</a></div><img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/351704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-06-03 17:53 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/06/03/351704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J-Hi实体与数据库表的关联关系</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/31/351390.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Tue, 31 May 2011 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/31/351390.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/351390.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/31/351390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/351390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/351390.html</trackback:ping><description><![CDATA[<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">大家可以简单将</span>J-Hi<span style="font-family: 宋体;">建模工具理解为数据库的</span>E-R<span style="font-family: 宋体;">图，每个实体就对应一个数据库的表，而实体中每个属性就对应数据库表的一个字段。那么实体与实体之间的关系或表与表的关系又是如何描述的呢？</span></p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">对于数据库表的关系大体可分为，如下几种形式</span></p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>many-to-one:</strong></span><span style="font-family: 宋体;">相当于一个数据库表的字段（外键）对应另一张数据库表的主键，对于</span>J-Hi<span style="font-family: 宋体;">来说，就是一个</span>lookup<span style="font-family: 宋体;">（查找带回）。即一个实体中的某个属性是</span>lookup<span style="font-family: 宋体;">类型，这个属性会</span>lookup<span style="font-family: 宋体;">另一个实体。对</span>lookup<span style="font-family: 宋体;">定义的操作步骤请参见&#8220;应用开发视频&#8221;。页面中的展示形式，例如你有一个报销单，要</span>lookup<span style="font-family: 宋体;">用户，那么平台就会自动将用户的名称带回来，并在数据库中将用户的</span>ID<span style="font-family: 宋体;">值保存到报销单表的相应字段中。</span></p>  <p>&nbsp;</p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>one-to-many:</strong></span><span style="font-family: 宋体;">相当于一个数据库表下面会有一个或多个明细表，例如一个报销单是主表而报销单明细是明细表。在数据库端的实现形式为，在明细表中有一个主表的外键</span>ID<span style="font-family: 宋体;">字段。在</span>J-Hi<span style="font-family: 宋体;">中我们称之为引用，具体操作见联机帮助</span></p>  <p align="center"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/er1.jpg" width="183" height="229" /></p>  <p align="center">&nbsp;</p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>one-to-one:</strong></span><span style="font-family: 宋体;">所谓一对一的关系在数据库上的理解为，</span>B<span style="font-family: 宋体;">表每加一条记录</span>A<span style="font-family: 宋体;">表也会随着增加一条记录，在</span>J-Hi<span style="font-family: 宋体;">中的表现形式为实体继承</span></p>  <p align="center"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/er2.jpg" width="743" height="243" /></p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">对于实体的继承，不只是简单的表</span>one-to-one<span style="font-family: 宋体;">关系，实体的继承还包括所有的</span>java<span style="font-family: 宋体;">类的继承关系，</span>JSP<span style="font-family: 宋体;">页面的整合等等</span></p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>  <p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>many-to-many:</strong></span><span style="font-family: 宋体;">多对多是一种复杂的表关系，</span>J-Hi<span style="font-family: 宋体;">是通过中间过渡表来实现这种多对多的关系，例如一个项目可以有多个成员，而一个成员又有可能在多个项目中，建模的图为</span></p>  <p align="center"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/er3.jpg" width="133" height="76" /></p><img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/351390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-05-31 10:34 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/05/31/351390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J-Hi 输出json数据到前台的例子</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/29/351289.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Sun, 29 May 2011 14:21:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/29/351289.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/351289.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/29/351289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/351289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/351289.html</trackback:ping><description><![CDATA[<p><strong>1</strong><strong><span style="font-family: 宋体;">．前台页面：</span></strong></p>
<p>//<span style="font-family: 宋体;">自定义一个回调函数</span>ajaxDone</p>
<p><span>&lt;form action="expert_BaseInformationSave.action?navTabId=expert_BaseInformationList&amp;callbackType=closeCurrent&amp;ajax=1" </span></p>
<p><span>method="post" class="pageForm required-validate" onsubmit="return validateCallback(this, <strong><em><span style="color: red;">ajaxDone</span></em></strong>)"&gt;</span></p>
<p>&nbsp;</p>
<p>//<span style="font-family: 宋体;">回调函数</span></p>
<p><span>&lt;script type="text/javascript"&gt;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function ajaxDone(json)</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(json.expert.name);</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p>&lt;/script&gt;</p>
<p>&nbsp;</p>
<p><strong>2</strong><strong><span style="font-family: 宋体;">．后台代码：</span></strong></p>
<p><span>public class Expert_BaseInformationSaveAction extends BaseAction implements SynchronizationData{</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Expert_BaseInformation expert_BaseInformation;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em><span style="color: red;">private JSONObject json;</span></em></strong></span></p>
<p>&nbsp;</p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String execute() throws Exception {</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Expert_BaseInformationManager expert_BaseInformationMgr = (Expert_BaseInformationManager)</span></p>
<p>SpringContextHolder.getBean(Expert_BaseInformation.class);</p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(super.perExecute(expert_BaseInformation)!= null) return returnCommand();</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>expert_BaseInformationMgr.saveExpert_BaseInformation(expert_BaseInformation);</p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>super.postExecute(expert_BaseInformation);</p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em><span style="color: red;">json = new JSONObject("expert", expert_BaseInformation, "name, gender, unit");</span></em></strong></span></p>
<p><strong><em><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em></strong></p>
<p><strong><em><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "json";</span></em></strong></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Expert_BaseInformation getExpert_BaseInformation() {</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return expert_BaseInformation;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p>&nbsp;</p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setExpert_BaseInformation(Expert_BaseInformation expert_BaseInformation) {</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.expert_BaseInformation = expert_BaseInformation;</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p>&nbsp;</p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em><span style="color: red;">public JSONObject getJson() {</span></em></strong></span></p>
<p><strong><em><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return json;</span></em></strong></p>
<p><strong><em><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em></strong></p>
<p>}</p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体;">注意：</span>action<span style="font-family: 宋体;">中必须定义</span><strong><em><span style="color: red;">public JSONObject getJson() {</span></em></strong></p>
<p><strong><em><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return json;</span></em></strong></p>
<p><strong><em><span style="color: red;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></em></strong><strong><em><span style="font-family: 宋体; color: red;">，</span> </em></strong><span style="font-family: 宋体;">否则前台无法获取</span>json<span style="font-family: 宋体;">数据。</span></p><p><br /><span style="font-family: 宋体;"></span></p><p><span style="font-family: 宋体;"><div><span style="font-family: 宋体;"> <strong><div><p style="margin-left: 39pt; text-indent: -18pt;"><br /> </p> <p style="margin-left: 39pt; text-indent: -18pt;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">&nbsp; <strong>注：该文档由J-Hi爱好者"笨笨"提供,他的QQ号为289542213，欢迎大家与他在技术上多多交流</strong></span></p></div></strong></span></div><br /></span></p><img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/351289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-05-29 22:21 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/05/29/351289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j-hi平台树形之二（节点过滤实现)</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/19/350646.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Thu, 19 May 2011 14:04:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/19/350646.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/350646.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/19/350646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/350646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/350646.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体;">本文主要讲解</span>J-hi<span style="font-family: 宋体;">中树的过滤。以员工部门树为例。</span></p>  <p><span style="font-family: 宋体;">要求在点击某个员工时，能够查看到该员工所在的部门。</span></p>  <p>&nbsp;</p><div align="center"><img src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/jhitree21.jpg" alt="" border="0" width="226" height="324" /></div><p>&nbsp;</p>  <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体;">图</span>1-<span style="font-family: 宋体;">部门树</span></p>  <p><span style="font-family: 宋体;">下图</span>2<span style="font-family: 宋体;">是所有员工列表：</span></p>  <p><img src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/jhitree22.jpg" alt="" border="0" width="828" height="123" /></p>  <p align="center"><span style="font-family: 宋体;">图</span>-2</p>  <p><span style="font-family: 宋体;">当点击王五时，显示王五所在的部门结构树如图</span>3<span style="font-family: 宋体;">。</span></p>  <p><img src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/jhitree23.jpg" alt="" border="0" width="253" height="199" /></p>  <p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体;">图</span>-3</p>  <p><span style="font-family: 宋体;">主要代码部分：</span></p>  <p><span style="font-family: 宋体;">１</span><span style="font-family: 宋体;">、</span>Jsp<span style="font-family: 宋体;">超链接代码：</span></p>  <p align="left"><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span></u><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">a</span></u></p>  <p align="left"><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">h</span></u><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">ref</span></u><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">="</span></u><em><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">tree.action?menuName=orgList&amp;orgId=</span></u></em><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">${item.org.id}" </span></u><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">target</span></u><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">=</span></u><em><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">"dialog"</span></u></em><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">${item.<u>org</u>.orgName}</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/a&gt;</span></p>  <p align="left"><span style="font-size: 10pt; font-family: 宋体; color: teal;">注意：</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">orgId</span><span style="font-size: 10pt; font-family: 宋体; color: teal;">是动态传入的参数，这里指该员工所在的部门编号。</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">2</span><span style="font-size: 10pt; font-family: 宋体;">、在</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;">himenu-config.xml</span><span style="font-size: 10pt; font-family: 宋体;">中配置部门树的后面加上这么一段</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"filter"</span></em><span style="color: teal;">&gt;</span> </span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">org</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.<u>cis</u>.filter.orgCollectionProcessor</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span> </p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>  <p align="left"><span style="font-size: 10pt; font-family: 宋体; color: teal;">注意</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">:string</span><span style="font-size: 10pt; font-family: 宋体; color: teal;">标签内的是写过滤数据的类。</span><span style="font-family: 宋体;">对树的数据进行过滤，提供两种接口方式对数据进行过滤</span> <span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">MenuFilterProcessor </span><span style="font-size: 10pt; font-family: 宋体; color: black;">在获取数据之前填加过滤器</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;MenuCollectionProcessor </span><span style="font-size: 10pt; font-family: 宋体; color: black;">在获取数据之后再对数据做整理</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.</span><span style="font-size: 10pt; font-family: 宋体; color: black;">具体方法查看</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">java-doc</span><span style="font-size: 10pt; font-family: 宋体; color: black;">的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">API</span><span style="font-size: 10pt; font-family: 宋体; color: black;">。</span></p>  <p align="left"><span style="font-size: 10pt; font-family: 宋体; color: black;">而例子的</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">orgCollectionProcessor</span><span style="font-size: 10pt; font-family: 宋体; color: black;">类代码：</span></p>  <p align="left"><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong> <strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">class</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> orgCollectionProcessor&nbsp;</span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">implements</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> MenuCollectionProcessor {</span></p>  <p align="left">&nbsp;</p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">public</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> <u>Collection</u> getCollection(<u>Collection</u> coll, Map&lt;String, String&gt; map) {</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">// </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f9fbf;">TODO</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;"> Auto-generated method stub</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//<u>coll</u> - </span><span style="font-size: 10pt; font-family: 宋体; color: #3f7f5f;">当前节点下一级节点的数据集合</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//map </span><span style="font-size: 10pt; font-family: 宋体; color: #3f7f5f;">动态的传入数据</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">,</span><span style="font-size: 10pt; font-family: 宋体; color: #3f7f5f;">以</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">map</span><span style="font-size: 10pt; font-family: 宋体; color: #3f7f5f;">的形式</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">//</span><span style="font-size: 10pt; font-family: 宋体; color: #3f7f5f;">传入一个员工的所在的部门</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f5f;">Id,</span><span style="font-size: 10pt; font-family: 宋体; color: #3f7f5f;">返回该员工所在的部门结构树</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">int</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> orgId=Integer.<em>parseInt</em>(map.get(</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #2a00ff;">"orgId"</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">).toString());</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">for</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> (<u>Iterator</u> iterator = coll.iterator(); iterator.hasNext();) {</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object obj = (Object) iterator.next();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">(obj </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">instanceof</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> HiOrg){</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HiOrg hiorg = (HiOrg)obj;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">if</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">(hiorg.getId()!=orgId) {</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iterator.remove();</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coll.remove(obj);</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f0055;">return</span></strong><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> coll;</span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>  <p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></p><p align="left"><br /><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"></span></p><p align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><div><p style="margin-left: 39pt; text-indent: -18pt;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">&nbsp; <strong>注：该文档由J-Hi爱好者"无可"提供,他的QQ号为924372739，欢迎大家与他在技术上多多交流</strong></span></p></div><br /></span></p><img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/350646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-05-19 22:04 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/05/19/350646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j-hi平台树形之一（带回的实现)</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/12/350046.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Wed, 11 May 2011 16:58:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/12/350046.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/350046.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/12/350046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/350046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/350046.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体;">树形菜单能很好的呈现菜单项之前的从属关系，结构清晰明了。</span>J-hi<span style="font-family: 宋体;">平台提供了自定义树形菜单的功能，通过简单的配置即可实现。</span></p>
<p><span style="font-family: 宋体;">本文主要介绍通过树形菜单选择带回节点值的实现方法。以选择带回行政区划位置为例。</span></p>
<h2><span style="font-family: 宋体;">数据库表设计：</span></h2>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/jhitree1.jpg" width="299" height="137" /></p>
<h2><span style="font-family: 宋体;">默认带回页选择界面：</span></h2>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/jhitree2.jpg" width="545" height="386" /></p>
<p><span style="font-family: 宋体;">通过</span>jhi<span style="font-family: 宋体;">自动生成代码的功能，对于</span>lookup xzqhwz<span style="font-family: 宋体;">的字段默认是如上带回页面，显然并不能表现行政区划位置之间的主从关系。</span></p>
<h2><span style="font-family: 宋体;">树形带回页面：</span></h2>
<p><span style="font-family: 宋体;">而如果实现如下页面的展示，将会清晰方便许多。</span></p>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/jhitree3.jpg" /></p>
<p><span style="font-family: 宋体;">双击即可带回节点，也可通过配置带回节点的各级父节点。</span></p>
<p><span style="font-family: 宋体;">下面是配置的方法：</span></p>
<h2><span style="font-family: 宋体;">配置方法：</span></h2>
<h2><span style="font-family: 宋体;">修改</span>xml</h2>
<p><span style="font-family: 宋体;">修改</span>C:"Program"hi-studio"eclipse"workspace"earch5"web"WEB-INF"config"himenu-config.xml</p>
<p><span style="font-family: 宋体;">在代码末尾：</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">object</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">java</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p><span style="font-family: 宋体;">之前插入：</span>(<span style="font-family: 宋体;">注意修改其中参数</span>)</p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">method</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"put"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">zdtree</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">object</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">class</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"org.hi.base.menu.strutsmenu.WebDynamicMenuDefine"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"keymap"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">object</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">class</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"java.util.HashMap"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">method</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"put"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">id</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">parentxzqhwz</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">object</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"parent"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">id</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"child"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">parentxzqhwz</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"childValue"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">int</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">0</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">int</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">&lt;!</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: 宋体; background: none repeat scroll 0% 0% yellow;">新版本</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">jhi</span><span style="font-size: 10pt; font-family: 宋体; background: none repeat scroll 0% 0% yellow;">应为</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">:&lt;string&gt;0&lt;/string&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">&gt;</span>&nbsp;</p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"menuName"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">zdtree</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"beanName"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">org</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.<u>hi</u>.<u>zdtree</u>.model.<u>Xzqhwz</u></span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"submenuName"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">zdtree</span></u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"title"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: 宋体; color: black;">行政区划位置</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"titleField"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">xzqhwz</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"needShow"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">true</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">boolean</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"javascript"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; function
backAgent(id,orgName){</span></p>
<p style="margin-left: 21pt; text-align: left; text-indent: 21pt;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">if(opener.document.getElementById('<u>yzjbxx</u>.<u>xzqhwz</u>')!=null){</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; opener.document.getElementById('<u>yzjbxx</u>.<u>xzqhwz</u>').value=orgName;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">&lt;!</span><span style="font-size: 10pt; font-family: 宋体; background: none repeat scroll 0% 0% yellow;">带回到相应的页面的相应文本框。</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">&gt;&nbsp;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else{&nbsp;opener.document.getElementById('<u>xzqhwz</u>.<u>pxzqhwz</u>').value=orgName;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opener.document.getElementById('<u>xzqhwz</u>.<u>parentxzqhwz</u>.id').value=id;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.close();</span></p>
<p style="text-align: left;" align="left"><u><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></u></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"> <span style="color: #7f007f;">property</span><span style="color: black;">=</span><em><span style="color: #2a00ff;">"action"</span></em><span style="color: teal;">&gt;</span></span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">{js}backAgent([#id],"'[#xzqhwz]"');</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">&lt;!</span><span style="font-size: 10pt; font-family: 宋体; background: none repeat scroll 0% 0% yellow;">在树型结构上通过双击一个节点，获取带回该节点的各级上节点</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal; background: none repeat scroll 0% 0% yellow;">&lt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f; background: none repeat scroll 0% 0% yellow;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal; background: none repeat scroll 0% 0% yellow;">&gt;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black; background: none repeat scroll 0% 0% yellow;">{js}backAgent([#id],"'[#parentxzqhwz.parentxzqhwz.parentxzqhwz.xzqhwz][#parentxzqhwz.parentxzqhwz.xzqhwz][#parentxzqhwz.xzqhwz][#xzqhwz]"');</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal; background: none repeat scroll 0% 0% yellow;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f; background: none repeat scroll 0% 0% yellow;">string</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal; background: none repeat scroll 0% 0% yellow;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; background: none repeat scroll 0% 0% yellow;">&gt;</span>&nbsp;</p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp; </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">object</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<p style="text-align: left;" align="left"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&lt;/</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #3f7f7f;">void</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: teal;">&gt;</span></p>
<h2><span style="font-family: 宋体;">修改</span>XzqhwzEdit.jsp<span style="font-family: 宋体;">页面</span></h2>
<p><span style="font-family: 宋体;">将</span>C:"Program"hi-studio"eclipse"workspace"earch5"web"zdtree"XzqhwzEdit.jsp<span style="font-family: 宋体;">中</span></p>
<p>onclick="xzqhwz_lookupPOP('parentxzqhwz')"</p>
<p><span style="font-family: 宋体;">改为：</span></p>
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">onclick="window.open('/tree.action?menuName=zdtree','</span><span style="font-size: 10pt; font-family: 宋体; color: #7f007f;">部门</span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #7f007f;">','width=300,height=500,left=10,top=20,location=no,status=no')"</span></p>
<p><span style="font-size: 10pt; font-family: 宋体; color: #7f007f;">这样，到</span>Xzqhwz<span style="font-family: 宋体;">的页面，点击父节点的带回按钮即可看到效果，同样</span>lookup<span style="font-family: 宋体;">到</span>xzqhwz<span style="font-family: 宋体;">字段的地方也修改</span>Edit.jsp<span style="font-family: 宋体;">页面的</span>onclick<span style="font-family: 宋体;">动作就行啦。</span></p>
<p><br />
</p>
<p><br />
</p>
<p><span style="font-family: 宋体;">该文档是对J-Hi树形的入门级介绍，J-Hi的树功能还有：节点的过滤，lazy加载，一个节点可以多个图标、复选框效果，多个实体组合形成一棵树，我们将在以后继续讲解</span></p>
<p><br />
</p>
<p style="margin-left: 39pt; text-indent: -18pt;"><span style="font-family: 宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">&nbsp; <strong>注：该文档由J-Hi爱好者"冯思豪"提供,他的QQ号为382600911，欢迎大家与他在技术上多多交流</strong></span></p>
<img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/350046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-05-12 00:58 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/05/12/350046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J-Hi的发布模式到底影响了哪些信息</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/08/349796.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Sun, 08 May 2011 14:12:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/08/349796.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/349796.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/08/349796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/349796.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/349796.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; J-Hi平台在考虑到开发时与发布后对信息、安全、效率等方面的要求不同，从而提供了设置开发模式与发布模式的开关。这个开关配置在src下的hiFrameworkConfig.properties文件中。<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;" align="center"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">hi.depolyment.published</span><span style="color: #000000;">=</span><span style="color: #0000ff;">true</span></div>
&nbsp;&nbsp;&nbsp; 下面让我们就这个开关项做如下分析，如果值为true,也就是发布模式，它到底会影响哪些东西：<br />
<br />
<strong>信息内容</strong><br />
&nbsp;&nbsp; 1）菜单中&#8220;权限&#8221;、&#8220;权限资源&#8221;将不在显示，因为一旦将做好的项目发布后，这些信息是不能让客户维护的。<br />
&nbsp;&nbsp; 2）菜单中&#8220;触发器&#8221;、&#8220;消息管理&#8221;将不可见，因为一旦定时服务设定好，一般来说客户很少会调整，即使是调整也应该是由开发人员来调整触发的周期与频率。对于消息管理也是一样。<br />
&nbsp;&nbsp; 3) 整个&#8220;国际化&#8221;菜单项全部不显示，这其中包括&#8220;多语言参数&#8221;、&#8220;语言编码&#8221;、&#8220;时区&#8221;，原因这些内部均应该在开发过程中将信息内容一并编辑完成。比如有一个语言编码就要有一套多语言参数与之对应，因些一旦系统上线，所有国际化部分的维护功能也应该同时完成。<br />
&nbsp;&nbsp; 4）&#8220;应用配置&#8221;列表中，&#8220;删除&#8221;图标将不再显示，因为如果系统上线，系统中的一些基础配置项是不能删除，而只能更改的<br />
<br />
对于这个功能的控制，是在main.jsp中，加入一个变量，代码如下<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;" align="center"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;">//</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;是否已发布的开关,其目的是如果为true则关闭那些对终端用户不可见的功能按钮&nbsp;</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ws:set&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="published"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="@org.hi.framework.HiConfigHolder@getPublished()"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span></div>
建议大家以后在自己采用J-Hi开发的系统中也可以采用该方式来控制页面，这样就可以做到即不影响开发，而在项目提交给用户时同样保证某些只在开发时才能用到的按钮或功能，只要改变一个开关就可以控制。&nbsp; <br />
<br />
<strong>安全</strong><br />
&nbsp;&nbsp; 如果采用了发布模式后，页面提交的URL将会被加密，而开发模式URL则是以明文显示，开关则试前后URL的效果如下：<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;" align="left"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">http:</span><span style="color: #008000;">//</span><span style="color: #008000;">localhost:8080/hiUserEdit.action?hiUser.id=1</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">http:</span><span style="color: #008000;">//</span><span style="color: #008000;">localhost:8080/hiUserEdit.action?cf4a9619dd97fc2689fb63048237404f</span></div>
&nbsp;&nbsp; 由此可以看出URL问号后的参数部分全部通过了加密处理，这样使您做出的系统更安全，通过使别人URL分析不出你要获取的信息参与也推导不出系统的结构<br />
<br />
<strong>效率</strong><br />
&nbsp;&nbsp; 1）如果是发布模式，DWZ版的所有js文件将采用压缩的文件，而非一个一个的离散文件，这样系统的传输的内容会更少，具体的方式参见styles.jsp文件<br />
&nbsp;&nbsp; 2）如果是发布模式,系统在启动时一次性加载<strong>枚举实体</strong>、<strong>枚举值</strong>、<strong>多语言参数</strong>、<strong>应用配置</strong>这些常量性的信息进入缓存，在取这些信息时系统会自动从缓冲中取而并非每都要查询数据库。举例来说，性别是一个下拉的枚举，如果是发布模式只直接从缓冲区中取数据，而如果是开发模式它就会去数据库中取数据，如果是一个人员列表，那么有几个要显示枚举的地方就要去数据库取几次。因此开发模式的运行效率要远远低于发布模式，但开发模式更有实效性，只要数据有任何变化都可以实体的反应出来，即使是在同一个事务中，而发布模式只能在一个事务完成之后再能做数据同步处理（即内存与数据库之间的数据同步）<br />
<img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/349796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-05-08 22:12 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/05/08/349796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J-Hi与DWZ强强联合共推J-Hi4DWZ版发布</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/04/349495.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Wed, 04 May 2011 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/04/349495.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/349495.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/04/349495.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/349495.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/349495.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="text-align: center;" align="center"><strong><span style="font-size: 14pt;" lang="EN-US"><br />
</span></strong><strong></strong><strong></strong></p>
<p class="MsoNormal"><span lang="EN-US">J-Hi</span><span style="font-family: 宋体;">与</span><span lang="EN-US">DWZ</span><span style="font-family: 宋体;">两个国内优秀的开源项目强强联合，携手推出</span><span lang="EN-US">J-Hi4DWZ</span><span style="font-family: 宋体;">版。</span></p>
<p class="MsoNormal" style="text-align: center;" align="center"><span lang="EN-US"><img src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/hi-logo.jpg" alt="" border="0" width="68" height="68" /></span><span style="font-size: 0pt; color: black; border: 1pt none black; padding: 0cm; background: none repeat scroll 0% 0% black;" lang="EN-US"><span>&nbsp;</span></span><span lang="EN-US"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/dwzlogo.png" width="150" height="50" /></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">登录页面</span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/4dwz1.jpg" width="881" height="367" /></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">首页面</span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/4dwz2.jpg" width="1024" height="506" /></span></p>
<p class="MsoNormal"><strong><span lang="EN-US">J-Hi</span></strong><strong><span style="font-family: 宋体;">生成器生成的编辑页面</span></strong><span style="font-family: 宋体;">：使你不用写任何一行代码就能实现富文本编辑、页面校验、上传附件、自动带回、主从表编辑等功能</span></p>
<p class="MsoNormal"><span lang="EN-US"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/4dwz4.jpg" width="1217" height="625" /></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">角色分派页面</span></strong><span style="font-family: 宋体;">：可以看到平台提供左侧树型结构（无需任何编码，简单配置即可）</span></p>
<p class="MsoNormal"><span lang="EN-US"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/4dwz3.jpg" width="1223" height="507" /><br />
</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">当然树还可以做成是弹出带回值效果</span></p>
<p class="MsoNormal"><span lang="EN-US"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/4dwz5.jpg" width="432" height="475" /></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">更新日志：</span></strong></p>
<p class="MsoNormal"><span lang="EN-US">1</span><span style="font-family: 宋体;">、融合</span><span lang="EN-US">DWZ</span><span style="font-family: 宋体;">富客户端做前端页面展示</span></p>
<p class="MsoNormal"><span lang="EN-US">2</span><span style="font-family: 宋体;">、支持跨浏览器包括</span><span lang="EN-US">IE6\7\8\9 FireFox</span><span style="font-family: 宋体;">等</span></p>
<p class="MsoNormal"><span lang="EN-US">3</span><span style="font-family: 宋体;">、实现</span><span lang="EN-US">webwork</span><span style="font-family: 宋体;">与</span><span lang="EN-US">struts2</span><span style="font-family: 宋体;">无配置文件解决方案</span></p>
<p class="MsoNormal"><span lang="EN-US">4</span><span style="font-family: 宋体;">、插件增加悬浮联机帮助</span></p>
<p class="MsoNormal"><span lang="EN-US">5</span><span style="font-family: 宋体;">、支持实体复制</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">1</span><span style="font-family: 宋体;">、解决登录用户的信息与数据库信息不一致的问题</span></p>
<p class="MsoNormal"><span lang="EN-US">2</span><span style="font-family: 宋体;">、解决多语言标签缓存问题</span></p>
<p class="MsoNormal"><span lang="EN-US">3</span><span style="font-family: 宋体;">、生成时如果有从表不在菜单显示</span></p>
<p class="MsoNormal"><span lang="EN-US">4</span><span style="font-family: 宋体;">、解决在</span><span lang="EN-US">struts</span><span style="font-family: 宋体;">下角色、权限、人员会有垃圾数据问题</span></p>
<p class="MsoNormal"><span lang="EN-US">5</span><span style="font-family: 宋体;">、增加二个对菜单树的过滤的接口，及回调实现</span></p>
<p class="MsoNormal"><span lang="EN-US">6</span><span style="font-family: 宋体;">、修改了对菜单树非整数型的配置方法</span></p>
<p class="MsoNormal"><span lang="EN-US">7</span><span style="font-family: 宋体;">、解决加删除标识符的实体未做过滤的问题</span></p>
<p class="MsoNormal"><span lang="EN-US">8</span><span style="font-family: 宋体;">、优化了</span><span lang="EN-US">webwork</span><span style="font-family: 宋体;">和</span><span lang="EN-US">struts</span><span style="font-family: 宋体;">的基类</span><span lang="EN-US">BaseAction</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">开发人员列表：</span></strong></p>
<table class="MsoTableGrid" style="border-collapse: collapse; border: medium none;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="width: 95.4pt; padding: 0cm 5.4pt;" valign="top" width="127">
            <p class="MsoNormal"><span style="font-family: 宋体;">人员</span></p>
            </td>
            <td style="width: 188.65pt; padding: 0cm 5.4pt;" valign="top" width="252">
            <p class="MsoNormal"><span style="font-family: 宋体;">主要工作</span></p>
            </td>
        </tr>
        <tr>
            <td style="width: 95.4pt; padding: 0cm 5.4pt;" valign="top" width="127">
            <p class="MsoNormal"><span style="font-family: 宋体;">张慧华</span></p>
            </td>
            <td style="width: 188.65pt; padding: 0cm 5.4pt;" valign="top" width="252">
            <p class="MsoNormal"><span style="font-family: 宋体;">与</span><span lang="EN-US">dwz</span><span style="font-family: 宋体;">集成，富客户端开发</span></p>
            </td>
        </tr>
        <tr>
            <td style="width: 95.4pt; padding: 0cm 5.4pt;" valign="top" width="127">
            <p class="MsoNormal"><span style="font-family: 宋体;">杨新峰</span></p>
            </td>
            <td style="width: 188.65pt; padding: 0cm 5.4pt;" valign="top" width="252">
            <p class="MsoNormal"><span lang="EN-US">Eclipse</span><span style="font-family: 宋体;">插件开发</span></p>
            </td>
        </tr>
        <tr>
            <td style="width: 95.4pt; padding: 0cm 5.4pt;" valign="top" width="127">
            <p class="MsoNormal"><span style="font-family: 宋体;">张昊</span></p>
            </td>
            <td style="width: 188.65pt; padding: 0cm 5.4pt;" valign="top" width="252">
            <p class="MsoNormal"><span style="font-family: 宋体;">生成器及底层开发</span></p>
            </td>
        </tr>
        <tr>
            <td style="width: 95.4pt; padding: 0cm 5.4pt;" valign="top" width="127">
            <p class="MsoNormal"><span style="font-family: 宋体;">肖金华、尹福泉</span></p>
            </td>
            <td style="width: 188.65pt; padding: 0cm 5.4pt;" valign="top" width="252">
            <p class="MsoNormal"><span style="font-family: 宋体;">修改平台功能页面，修改</span><span lang="EN-US">bug</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">测试人员列表：</span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体;">罗天文、伏占才、宋艺、肖金华、张昊</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">下载地址：</span><span lang="EN-US"><a href="http://code.google.com/p/j-hi/downloads/list">http://code.google.com/p/j-hi/downloads/list</a></span></p>
<p class="MsoNormal"><span lang="EN-US">J-Hi</span><span style="font-family: 宋体;">：</span><span lang="EN-US"><a href="http://code.google.com/p/j-hi/">http://code.google.com/p/j-hi/</a></span></p>
<p class="MsoNormal"><span lang="EN-US">DWZ</span><span style="font-family: 宋体;">：</span><span lang="EN-US"><a href="http://code.google.com/p/dwz/">http://code.google.com/p/dwz/</a></span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">线上交流：</span><span lang="EN-US">133176937(</span><span style="font-family: 宋体;">满</span><span lang="EN-US">),133177634(</span><span style="font-family: 宋体;">满</span><span lang="EN-US">),133178083,134232577</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">相关文章</span></strong><span style="font-family: 宋体;">：</span><span lang="EN-US"><a href="../archive/2011/04/25/348939.html"><span style="font-family: 宋体;" lang="EN-US"><span lang="EN-US">写在</span></span>J-Hi
for DWZ<span style="font-family: 宋体;" lang="EN-US"><span lang="EN-US">版发布的前夜</span></span></a></span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a href="../archive/2011/05/02/349363.html">J-Hi<span style="font-family: 宋体;" lang="EN-US"><span lang="EN-US">快速开发平台到底快速在哪里</span></span>?</a></span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a href="http://developer.51cto.com/art/201103/250221.htm"><span style="color: windowtext; text-decoration: none;">&#8220;J-Hi&#8221;Java</span><span style="font-family: 宋体; color: windowtext; text-decoration: none;" lang="EN-US"><span lang="EN-US">开源平台的生力军</span></span></a></span></p>
<p class="MsoNormal"><strong><span lang="EN-US">&nbsp;</span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体;">下一步计划：</span></strong></p>
<p class="MsoNormal" style="margin-left: 59.25pt; text-indent: -18pt;"><span lang="EN-US"><span>1）<span style="font: 7pt &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-family: 宋体;">融合</span><span lang="EN-US">SpringJDBC</span></p>
<p class="MsoNormal" style="margin-left: 59.25pt; text-indent: -18pt;"><span lang="EN-US"><span>2）<span style="font: 7pt &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-family: 宋体;">支持实体从数据库反向导入并生成代码</span></p>
<p class="MsoNormal" style="margin-left: 59.25pt; text-indent: -18pt;"><span lang="EN-US"><span>3）<span style="font: 7pt &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-family: 宋体;">支持树形组件的可视化配置</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/349495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-05-04 15:18 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/05/04/349495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J-Hi快速开发平台到底快速在哪里?</title><link>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/02/349363.html</link><dc:creator>张昊</dc:creator><author>张昊</author><pubDate>Sun, 01 May 2011 16:32:00 GMT</pubDate><guid>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/02/349363.html</guid><wfw:comment>http://www.blogjava.net/hao-zhang-hi/comments/349363.html</wfw:comment><comments>http://www.blogjava.net/hao-zhang-hi/archive/2011/05/02/349363.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/hao-zhang-hi/comments/commentRss/349363.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hao-zhang-hi/services/trackbacks/349363.html</trackback:ping><description><![CDATA[<p><strong>1</strong><strong><span style="font-family: 宋体;">、快速上手，降低学习曲线</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">对于刚刚接触</span>J-Hi<span style="font-family: 宋体;">的人来说，它上手很容易，我们为每一个功能点都提供了悬浮帮助功能，即使没有任何资料（当然我们已提供了视频与开发文档），您也可以通过向导与帮助在十分钟之内就可以创建出您自己的项目原型。</span></p>
<p style="margin: 0cm -88.6pt 0.0001pt -90pt; text-align: center;" align="center"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/fp1.jpg" width="903" height="381" /></p>
<p style="margin-right: 1.25pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">其次</span>J-Hi<span style="font-family: 宋体;">平台采用的大都是大家耳熟能详的主流框架与技术，如果您对主流的框架有所了解，那么对</span>J-Hi<span style="font-family: 宋体;">的学习就没有任何阻力了。</span></p>
<p><strong>2</strong><strong><span style="font-family: 宋体;">、快速搭建开发环境</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">也许您因为项目或自身开发团队的不同会采用不同的框架技术，例如您团队中对</span>struts2<span style="font-family: 宋体;">熟悉的人远远要比掌握</span>webwork<span style="font-family: 宋体;">的工程师要多，或者在您的项目中统计分析的功能很多，您要考虑</span>ORM<span style="font-family: 宋体;">的效率问题，而不得不放弃</span>hibernate<span style="font-family: 宋体;">而采用</span>ibatis<span style="font-family: 宋体;">或</span>springJDBC<span style="font-family: 宋体;">，也许您还要考虑数据库问题等等。在搭建开发环境您一定会考虑很多因素，尽管搭建开发环境并不复杂，但还是不够自动化，还要手动的配置，费时费力。</span>J-Hi<span style="font-family: 宋体;">为快速搭建开发环境提供合理的解决方案，您可以按需求动态的搭建开发环境。</span></p>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/fp2.jpg" width="502" height="103" /></p>
<p><span style="font-family: 宋体;">在此您可以选择不同的</span>ORM<span style="font-family: 宋体;">框架</span></p>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/fp3.jpg" width="497" height="94" /></p>
<p><span style="font-family: 宋体;">在此您可以选择不同的表现层框架</span></p>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/fp4.jpg" width="496" height="110" /></p>
<p><span style="font-family: 宋体;">在此您可以选择不同的页面框架，并且我们提供了&#8220;预览&#8221;让您在搭建开发环境之前就可以看到搭建后的页面显示效果</span></p>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/fp5.jpg" width="516" height="298" /></p>
<p><span style="font-family: 宋体;">在此您可以选择不同的数据库。</span></p>
<p><strong>3</strong><strong><span style="font-family: 宋体;">、快速生成所有代码</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">通过建立或导入模式，您可以快速的生成所有代码与文件，并且在生成时会根据您选择的框架技术与数据库的不同而自动适配。</span></p>
<p style="text-align: center;" align="center"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/fp6.jpg" width="398" height="298" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">当然您还可以有选择的生成部分代码文件，例如只生成</span>JSP<span style="font-family: 宋体;">页面，或只生成</span>java<span style="font-family: 宋体;">代码。生成的</span>java<span style="font-family: 宋体;">代码结构如下（因为我选择的框架是</span>ibatis3+struts2<span style="font-family: 宋体;">，所以平台会自动匹配只生成与这两个框架相关的类文件，而不会生成无用的其它框架的东西）：</span></p>
<p style="text-align: center;" align="center"><img alt="" src="http://www.blogjava.net/images/blogjava_net/hao-zhang-hi/fp7.jpg" width="272" height="512" /></p>
<p><strong>4</strong><strong><span style="font-family: 宋体;">、快速解决在业务需求中的技术难点</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">一般我们在做项目开发时，总是要等到项目开发的中、后期才能去解决业务核心问题，因此很造成无法合理估计项目的技术风险。原因是复杂的业务总是要等到基础模块建好后才能进入到开发阶段，从而使解决核心的技术问题置后。我们以一个报销为例来做个简单说明，比如报销在审核后的业务逻辑很复杂并且有可能还要涉及到与其它的系统对接。一般来说我们总是要等到这个报销单建好，起码要有最基本的增删查改功能（即使没有页面也要有后台的代码）后才能进入到核心业务的开发，这就加大的技术风险，因为我们会很早的发现问题，但解决这些问题却远远的落后于发现这个问题，甚至到了开发的中、后期因为技术问题在底层上还要一改再改。而使用</span>J-Hi<span style="font-family: 宋体;">可以很快的进入到业务核心的技术上，因为只要生成，基础功能就已经提供，甚至平台还为您提供了单元测试用例类，从而使您可以直指业务核心，将项目风险控制在最低。</span></p>
<p><strong>5</strong><strong><span style="font-family: 宋体;">、通过提供通用的组件</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">平台提供了很多通用业务组件，例如组织机构、角色权限、报表、定时任务、菜单管理、日志管理、系统配置、附件上传等等，除此之外平台还提供了一些纯技术组件，例如树型结构、</span>java<span style="font-family: 宋体;">脚本工具、编码生成器、可选择性的返回</span>JSON<span style="font-family: 宋体;">对象等等。这些通用的业务组件与技术组件可以为您在开发过程节省很多时间，随需使用，从而大大降低开发速度。</span></p>
<p><strong>6</strong><strong><span style="font-family: 宋体;">、通过服务的复用性提高开发速度</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">在介绍平台的服务复用性之前，让我们来举个例子。比如您做了一个</span>OA<span style="font-family: 宋体;">项目其中有一个模块是报销管理这个模块很成熟，您已经在</span>OA<span style="font-family: 宋体;">系统中应用了很久。现在又有一个</span>ERP<span style="font-family: 宋体;">系统，您想把这个成熟的报销管理复制到</span>ERP<span style="font-family: 宋体;">系统中，这样这个功能就不用在</span>ERP<span style="font-family: 宋体;">系统中再做开发了。对于平台来说这就是服务的复用性，我们提供了一整套对服务复用性的解决方案，并且有自己的可视化工具。</span></p>
<p><span style="font-family: 宋体;">我们叫它</span>J-Hi<span style="font-family: 宋体;">整合工具，是用</span>C#<span style="font-family: 宋体;">做的。它的作用：</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 1<span style="font-family: 宋体;">）可视化导入</span>/<span style="font-family: 宋体;">导出数据库，并同时实现跨数据库，例如您可以在</span>mysql<span style="font-family: 宋体;">上开发（导出），开发完将所有的数据迁移到</span>oracle<span style="font-family: 宋体;">上（导入）。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2<span style="font-family: 宋体;">）发布器，可视化将您开发的模块或系统自动发布成一个发布包（包括数据库、</span>jar<span style="font-family: 宋体;">、文件[jsp、js、图片、配置文件等]还包括文件的片段</span>[<span style="font-family: 宋体;">例如修改</span>web.xml<span style="font-family: 宋体;">文件中的一部分内容</span>]<span style="font-family: 宋体;">）</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 3<span style="font-family: 宋体;">）部署器，将发布包部署到开发的工程中，部署的内容见发布器的描述</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 4<span style="font-family: 宋体;">）实施器，对应的生产系统，我们通过</span>FTP<span style="font-family: 宋体;">，将相应的文件与数据库自动部署到生产系统中</span></p>
<p><strong>7</strong><strong><span style="font-family: 宋体;">、快速的部署与迁移</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">也许您正在为客户要求从</span>SQLServer<span style="font-family: 宋体;">数据库改为</span>Oracle<span style="font-family: 宋体;">而感到苦恼，因为这要做大量的数据迁移工作，或许您反复的将修改后的</span>bug<span style="font-family: 宋体;">部署到生产环境中而郁闷，我想</span>J-Hi<span style="font-family: 宋体;">通过它的整合工具为您提供了便捷的方式。具体的实现方式请参见上一节的介绍</span></p>
<p><strong>8</strong><strong><span style="font-family: 宋体;">、开发人员可以快速的接手别人的工作</span></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">因为使用</span>J-Hi<span style="font-family: 宋体;">开发，生成的代码与文件的风格都是相同的，在哪里写业务逻辑应该怎么写？在哪里要改页面应该怎么做？想要到哪张数据库表或表与类的对应关系？包括生成的类、</span>JSP<span style="font-family: 宋体;">文件、配置文件的命名规则都是统一的。因此一个新人加入团队会很容易的上手并进入工作状态，即使是修改别人写过的代码，也会很快速的定位到相应要修改的位置。</span></p>
<p><strong>9</strong><strong><span style="font-family: 宋体;">、快速解决需求变更</span></strong></p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><span style="font-family: 宋体;">对于项目开发来说，项目的需求变更是很正常的事情，对于有经验的项目经理来说，如果一个项目从未发生过需求变更过反而是不正常了</span><span style="font-family: Wingdings;">:)</span><span style="font-family: 宋体;">一但需求变更大多都要改数据库表，如果是已运行很稳定的系统，这种变更真是要命。</span>J-Hi<span style="font-family: 宋体;">为此也提供了自己的解决方案，对于简单表变更，平台只要对单个实体生成就可以了。如果是复杂的变更，我们还提供继承实体的解决方案，也就是说原来的所有代码与表结构都不变，通过实体继承</span>J-Hi<span style="font-family: 宋体;">会从数据库表到</span>java<span style="font-family: 宋体;">类再到</span>JSP<span style="font-family: 宋体;">页面形成一整套继承关系，从而保证以前功能的稳定性。这个说来好象很玄妙，让我们举例说明。比如你有一个部门表，</span>N<span style="font-family: 宋体;">多信息都与它有联系，而且做了很多的业务处理，现在客户要求在部门表中加另一些信息。对你来说可能会为部门表中加字段，由此而带来所有类的变化与页面的变化，而这套系统已经很稳定已经用了一、两年了，开发人员都已经离开了公司，这样接手的人要读懂全部代码才有可能改，这样就造成开发速度的大大降低。平台提供了另一种解决方案：不动以前的任何东西，相关于在原有的基础上打上一块补丁。再做一张表，让这张表与部门表形成</span>one to one<span style="font-family: 宋体;">的关系，而类无论是</span>POJO<span style="font-family: 宋体;">、</span>DAO<span style="font-family: 宋体;">、</span>Service<span style="font-family: 宋体;">都继承自部门相应类作为父类，同时在</span>JSP<span style="font-family: 宋体;">页面上也会继承所有部门的所有元素，这样就形成了实体继承关系，这就好比设计模式中最基本的&#8220;开闭原则&#8221;，对于所有的新生功能是开放的，而对于已有的老功能是关闭的，可以完全把老的功能视为一个黑箱。这样即能保证已有功能的稳定性，又能加入新的功能做为补充。</span></p>
<img src ="http://www.blogjava.net/hao-zhang-hi/aggbug/349363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hao-zhang-hi/" target="_blank">张昊</a> 2011-05-02 00:32 <a href="http://www.blogjava.net/hao-zhang-hi/archive/2011/05/02/349363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>