<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>JSF</title>
    <description>JSF是由Sun公司推出的一种用来开发Web应用程序的技术，同时也是对诸多实现Web应用程序的规范的一种补充。</description>
    <link>http://JSFgroup.group.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>.net 数据导出Excl格式</title>
        <author>Angelialily</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://angelialily.javaeye.com">Angelialily</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/210734" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/210734</a>&nbsp;
          发表时间: 2008年07月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          private void Button2_Click(object sender, System.EventArgs e)<br />		{<br />			if(DataGrid1.Items.Count==0)<br />			 {<br />				Response.Write("&lt;script>alert('对不起,你没有查询到任何记录,不能导出数据')&lt;/script>");<br />			 }else{      <br />					Response.Clear(); <br />					Response.Buffer= true;<br />					Response.Charset="GB2312";<br />					Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");<br />					Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");<br />						 //设置输出流为简体中文<br />					Response.ContentType = "application/ms-excel";<br />						//设置输出文件类型为excel文件。<br />					this.EnableViewState = false;<br />					System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);<br />					System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);<br />					System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);<br />					DataGrid1.RenderControl(oHtmlTextWriter);<br />					Response.Write(oStringWriter.ToString());<br />					Response.End();<br />		}
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/210734#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 Jul 2008 18:21:52 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/210734</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/210734</guid>
      </item>
      <item>
        <title>NetBeans6.1 插件支持Facelets Web 框架 (包含JBossSeam 的代码生)</title>
        <author>gml520</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gml520.javaeye.com">gml520</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/209894" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/209894</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天再向大家介绍一款插件 Facelets&nbsp; , Facelets 也是一个Web 框架.和JSF 有关. 这款插件还提供JBoss Seam 支持.&nbsp; 具体看看<strong>Facelets 插件的发展史</strong>
.&nbsp; Facelets提供了NetBeans6.1 FCS 和ML 两个版本的下载!<br />
该项目主页:<a href="https://nbfaceletssupport.dev.java.net/">https://nbfaceletssupport.dev.java.net/</a>
<br />
<br />
<strong><span style="color: red;"><span style="color: red;"><span style="color: red;">支持 JBossSeam&nbsp; 插件</span>
下载</span>
</span>
</strong>
: <a href="http://www.blogjava.net/Files/gml520/org-netbeans-modules-web-nbseamgenintegration.rar">http://www.blogjava.net/Files/gml520/org-netbeans-modules-web-nbseamgenintegration.rar</a>
<br />
<br />
Facelets 特性介绍&nbsp; :<a href="https://nbfaceletssupport.dev.java.net/features.html">https://nbfaceletssupport.dev.java.net/features.html</a>
&nbsp; (<span style="color: red;">强烈推荐</span>
)<br />
入门教程:&nbsp; <a href="http://wiki.netbeans.org/UsingJSFAndFaceletsInNetbeans">http://wiki.netbeans.org/UsingJSFAndFaceletsInNetbeans</a>
 (这个是5.5 的教程,但是对于6.x 应该也适用!)<br />
<br />
(翻译就免了吧!<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emsmilep.gif" border="0" align="absmiddle" alt="" />
)<br />
<br />
<strong>Release Notes</strong></p>
<p>
The main goal of this project is to support
<a href="https://facelets.dev.java.net/">Facelets</a>
 in NetBeans IDE.</p>
<p>
The 6.1 development snapshot is currently available:
<a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99000/nbfaceletssupport-6.1.zip">
6.1 FCS download here</a>
 or
<a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99718/nbfaceletssupport-6.1ml.zip">
6.1 ML download here</a>
.
This release delivers bundled Facelets 1.1.14 and also provides palettes for facelets files.
The majority of the palette was created by Daniel Boekhoff. Thanks to Daniel for the contribution.
</p>
<p>
This build only works with NetBeans 6.1 because it has an
implementation dependency on NetBeans 6.1 FCS/ML. Necessary fixes for
the daily builds of NetBeans 6.5 will be provided after the official
6.1 plugin is released. The functionality is still under development
and the main goal of this snapshot is to get feedback from real
Facelets users. You can read more about the support on the <a href="https://nbfaceletssupport.dev.java.net/features.html">feature page</a>
.</p>
<p><strong>下面是Facelets 插件的发展史:</strong></p>
<p>04 June 2008<br />
A lot of requests have been
made asking when Facelets support will be available on NetBeans 6.1 and
how it will be provided. Yes, there is a plan to officially release the
support NBMs through the update center for NetBeans 6.1. We are
currently working to resolve several compatibility issues and migrate
the internal API usage to NetBeans 6.1. When the plugin is ready for
final release, we will announce it and make it available in the
Available Plugins list of NetBeans 6.1, but you can currently download
the Beta release binary for NetBeans 6.1 FCS <a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99000/nbfaceletssupport-6.1.zip">here</a>
 or NetBeans 6.1 ML
<a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/99718/nbfaceletssupport-6.1ml.zip">here</a>
.</p>
<p>28 November 2007<br />
Many people have asked me when a version of facelets support will be available for NetBeans 6.0.
You can download it <a href="https://nbfaceletssupport.dev.java.net/files/documents/5684/77220/nbfaceletssupport-0-6.zip">here</a>
.
<br />
<br />
No user improvements have been made, but this build works with NetBeans 6.0 and some issues have been fixed.
Unfortunately I don't have enough time for deep testing and I also expect some regressions.
If you find any problems when evaluating this snapshot, please fill a new issue in the Issue tracker
and mark the issue that was found in snapshot06. Thank you for your help.
</p>
<p>7 June 2007<br />
Daniel Boekhoff wrote a new tutorial -
<a href="http://www.dbnetworx.de/brain-backup/tutorial-running-and-facelets-support-in-netbeans-with-jpa-glassfish-and-mysql-5">Running and Facelets Support in Netbeans (with JPA, Glassfish and MySQL 5)</a>
. The tutorial is also available on  <a href="http://wiki.netbeans.org/wiki/view/UsingJSFAndFaceletsInNetbeans">wiki.netbeans.org</a>
. Thanks to Daniel for the contribution.
</p>
<p>22 May 2007<br />
A new build of the Seam Gen Integration module is now available.<span style="color: red;">
<strong>This version works with JBoss Seam 1.2.1 GA</strong>
</span>
, which generates a folder structure of the sources that
differs slightly from the previous one.
This change and some bug fixes are contained in the new build version 0.2.&nbsp;</p>
<p>&nbsp;</p>
<p>随便贴几幅截图,还有好多呢! 具体看看<a href="https://nbfaceletssupport.dev.java.net/features.html">https://nbfaceletssupport.dev.java.net/features.html</a></p>
<p><img src="https://nbfaceletssupport.dev.java.net/CodeCompletion01.png" alt="" /></p>
<p>&nbsp;</p>
<p><img src="https://nbfaceletssupport.dev.java.net/images/NewTemplateWizard.png" alt="" />
</p>
<p>&nbsp;</p>
<p><img src="https://nbfaceletssupport.dev.java.net/images/CodeCompletion03.png" alt="" /></p>
<p><img src="https://nbfaceletssupport.dev.java.net/images/CodeCompletion09.png" alt="" />
</p>
<p>&nbsp;</p>
<p>
<img src="https://nbfaceletssupport.dev.java.net/images/CodeCompletion05.png" alt="" />
<br /></p>
<table border="1">
<tbody>
<tr>
<td>Document</td>
<td>Tag Code Completin</td>
</tr>
<tr>
<td>Before CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-1-1.png" alt="AutoImport-1-1.png" />
</td>
</tr>
<tr>
<td>During CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-1-2.png" alt="AutoImport-1-2.png" />
</td>
</tr>
<tr>
<td>After CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-1-3.png" alt="AutoImport-1-3.png" />
</td>
</tr>
</tbody>
</table>
<p>Examples 2: Very similar to the example 1. Only the user doesn't complete a tag, but the value of jsfc attribute of a html tag.
</p>
<table border="1">
<tbody>
<tr>
<td>Document</td>
<td>Code Completion of jsfc attribute</td>
</tr>
<tr>
<td>Before CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-2-1.png" alt="AutoImport-2-1.png" />
</td>
</tr>
<tr>
<td>During CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-2-2.png" alt="AutoImport-2-2.png" />
</td>
</tr>
<tr>
<td>After CC</td>
<td><img src="https://nbfaceletssupport.dev.java.net/images/AutoImport-2-3.png" alt="AutoImport-2-3.png" />
</td>
</tr>
</tbody>
</table>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/209894#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 18:43:25 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/209894</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/209894</guid>
      </item>
      <item>
        <title>JSF的各种框架实现（对目前JSF群雄一个了解）(转)</title>
        <author>xo_tobacoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xo-tobacoo.javaeye.com">xo_tobacoo</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/208098" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/208098</a>&nbsp;
          发表时间: 2008年06月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2>还不懂为什么要用JSF,企业开发能从中得到什么好处？不过国外似乎火得不得了。。。面向组件，也似乎很诱人。</h2>
<div class="t_msgfont" id="postmessage_251"><span class="t_tag" onclick="tagshow(event)">JSF</span>的各种框架实现<br /><br />JSF官方主页：<a href="http://java.sun.com/javaee/javaserverfaces/" target="_blank">http://java.<span class="t_tag" onclick="tagshow(event)">sun</span>.com/javaee/javaserverfaces/</a><br />JSF开发主页：<a href="https://javaserverfaces.dev.java.net/" target="_blank">https://javaserverfaces.dev.java.net/</a><br />JSF Sandbox主页（jsf-ri的一个扩展组件库）：<a href="https://javaserverfaces.dev.java.net/sandbox/" target="_blank">https://javaserverfaces.dev.java.net/sandbox/</a><br />JSF Templating主页（jsf 的一种模板语言）：<a href="https://jsftemplating.dev.java.net/" target="_blank">https://jsftemplating.dev.java.net/</a><br /><span class="t_tag" onclick="tagshow(event)">Facelets</span>主页（jsf的tiles，比tiles更加优秀）：<a href="https://facelets.dev.java.net/" target="_blank">https://facelets.dev.java.net/</a><br /><br />Myfaces主页：<a href="http://myfaces.apache.org/" target="_blank">http://<span class="t_tag" onclick="tagshow(event)">myfaces</span>.apache.org/</a><br />Myfaces tomahawk 主页（myfaces的扩展组件库，支持myfaces和jsf-ri）：<a href="http://myfaces.apache.org/tomahawk/index.html" target="_blank">http://myfaces.apache.org/tomahawk/index.html</a><br />Myfaces Sandbox主页（tomahawk的扩展库，成熟以后的sandbox组件将加入tomahawk中）：<a href="http://myfaces.apache.org/sandbox/index.html" target="_blank">http://myfaces.apache.org/sandbox/index.html</a><br />Myfaces wiki主页：<a href="http://wiki.apache.org/myfaces/" target="_blank">http://wiki.apache.org/myfaces/</a><br />Myfaces Trinidad(ADF) wiki主页（Oracle ADF 捐赠给了Apache社区， 成了myfaces的一个扩展库，名字也改为Trinidad，拥有100多个组件， 是目前最完整的jsf组件库， 部分组件库具有ajax效果，后继<span class="t_tag" onclick="tagshow(event)">版本</span>将增加更多的ajax支持，支持皮肤更换）：<a href="http://wiki.apache.org/myfaces/Trinidad" target="_blank">http://wiki.apache.org/myfaces/Trinidad</a><br />MyFaces Components主页：<a href="http://wiki.apache.org/myfaces/MyFacesComponents" target="_blank">http://wiki.apache.org/myfaces/MyFacesComponents</a><br />Myfaces showcase主页（一个专门支持jsf的网站，提供各种组件库的最新演示）：<a href="http://www.irian.at/myfaces.jsf" target="_blank">http://www.irian.at/myfaces.jsf</a><br /><br />Ajax4jsf 主页（目前基于jsf的最优雅的ajax实现，可以在不改变原有应用的基础上，为jsf添加ajax效果； 原来是exadel公司开发， 现被jboss 合并， 称为 JBoss Ajax4jsf）：<a href="http://labs.jboss.com/jbossajax4jsf/" target="_blank">http://labs.jboss.com/jboss<span class="t_tag" onclick="tagshow(event)">ajax4jsf</span>/</a><br />Richfaces主页（原来是商业的VCP，属于exadel公司，后被jboss合并， 改为JBoss richfaces，并开源了， 是基于ajax4jsf的一个扩展组件库，非常漂亮，预置了多种皮肤， 还支持自定义皮肤）：<a href="http://labs.jboss.com/jbossrichfaces/" target="_blank">http://labs.jboss.com/jbossrichfaces/</a><br />Apache Shale （Struts的后继框架， 基于jsf， 沿用了struts的诸多优点， 同时做了很多扩展，支持ajax， 分成多个部分组成， 可以根据项目情况灵活选择）主页：<a href="http://shale.apache.org/" target="_blank">http://shale.apache.org/</a><br />Seam主页（基于JSF和EJB3的优秀框架， 吸收了Ruby的思想， 非常简洁， 是目前最优秀的jsf框架， 但是其最大缺点是与中间件有关， 缺乏对商业中间件，如<span class="t_tag" onclick="tagshow(event)">web</span>logic，oracle as的支持）：<a href="http://www.jboss.com/products/seam" target="_blank">http://www.jboss.com/products/<span class="t_tag" onclick="tagshow(event)">seam</span></a><br /><br />QuipuKit主页（一个jsf的扩展组件库，支持jsf-ri和myfaces，能与ajax4jsf结合， 很多组件都内置ajax特性， 效果非常不错， 是商业的）：<a href="http://www.teamdev.com/quipukit/index.jsf" target="_blank">http://www.teamdev.com/quipukit/index.jsf</a><br />ICEFaces主页（曾经是商业的，后来开源了， 采用一种新颖的&ldquo;推&rdquo;技术实现ajax， 交互速度非常快， 而且还提供了企业版，企业版是收费的， 提供了一些企业级特性， 如集群支持等）：<a href="http://www.icefaces.org/main/home/index.jsp" target="_blank">http://www.icefaces.org/main/home/index.jsp</a><br />RCFaces主页（一个开源的组件库， 内置ajax支持， 组建库较为完善， 但是缺乏文档和社区支持）：<a href="http://www.rcfaces.org/" target="_blank">http://www.rcfaces.org/</a><br /><br />Sun Blueprints主页（sun提供的一个开源扩展组建库，内置ajax支持，组建实现效果非常好， 部分组建支持j2ee1.4，基于jsf1.1， 部分组建基于jsf1.2，只支持java ee 5环境）：<a href="https://blueprints.dev.java.net/" target="_blank">https://blueprints.dev.java.net/</a><br />Sun Jsf-Extentsions主页（sun 公司实现的一个类似于ajax4jsf的扩展库，为应用提供ajax支持，同时这个项目也参考了一些apache shale的特点， 将项目分为多个部分， 可以根据情况灵活选择，目前已经有不少组件库是基于jsf-<span class="t_tag" onclick="tagshow(event)">ext</span>entions实现，比如woodstock）：<a href="https://jsf-extensions.dev.java.net/nonav/mvn/" target="_blank">https://jsf-extensions.dev.java.net/nonav/mvn/</a><br />Sun WoodStock 主页(sun 提供的一个jsf组件库，目前非常活跃， 更新速度较快， 支持ajax， 支持皮肤， 非常漂亮， 还实现了一些其他组件库没有实现过的组建， 值得关注)：<a href="https://woodstock.dev.java.net/index.html" target="_blank">https://woodstock.dev.java.net/index.html</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/208098#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Jun 2008 09:30:12 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/208098</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/208098</guid>
      </item>
      <item>
        <title>JAVA,像COBOL式死亡？？？</title>
        <author>lxdhdgss</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://luxiangdong.javaeye.com">lxdhdgss</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/208022" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/208022</a>&nbsp;
          发表时间: 2008年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          转自<a href="http://www.ibm.com/developerworks/cn/java/j-cobol.html" target="_blank">http://www.ibm.com/developerworks/cn/java/j-cobol.html</a><br />作者：Ted Neward (ted@tedneward.com), 主管, Neward & Associates<br />2008 年 6 月 17 日<br /><br />对于最近有关 Java™ 即将退出历史舞台的传言，您可能想知道在这个时候放弃使用 Java 平台并转而使用更新的技术是否时机成熟？在作出您的判断之前，请先回顾并查看一下 Java 生态系统以及它的竞争者，看看这些传闻是否站得住脚。换而言之，了解整个 Java 世界目前的现状，并客观公正地评判这个平台。<br />在学生时代，我们可能会想起 Thomas Malthus 所做的预言，他认为人类赖以生存并继而形成人类文明的农业体系，可能无法再承受人口数量的不断攀升，另一方面，这种情况将不可避免地造成严重的后果，通常会引起巨大的灾难或其他自然灾害。他这样写道：若对人口数量不加限制，将呈几何级数增长。而人们赖以生存的物质则以代数级数增长。与后者相比较，如果稍微了解一下这些数字，就会意识到人口增长是多么惊人。这意味着，针对生存物质的匮乏，需要对人口增长进行严格而持久的控制。物质匮乏终究会发生在某些地方，并且必定会严重影响到大部分人类。<br /><br />Thomas Malthus 在 1798 年发表了 “人口论”（参见 参考资料）。从那时开始，我们一直在等待着验证有关人口增长的 “Malthusian 检验”。<br /><br />编程人员，特别是使用 Java 平台和语言的人员，可能已经注意到，随着使用难度不断增加，人们的种种预测和统计暗示着他们所选择的平台即将没落。而大量候补接任者跃跃欲试：人们提名 .NET、Ruby 甚至是 Python 作为 “下一代重要技术”。<br /><br />这两种 “Malthusian 学说” 之间存在着惊人的相似之处。<br /><br />Malthus 认为，由于食物对人类的生存非常重要，而地球的产出有限，并且繁殖所需的生物体系是不会改变的，我们终将达到一个极限，那时地球将无法承受人口负担。换句话说，如果继续以现在这样的方式生存，将注定灭亡的结局。那么在 1798，很难推翻 Malthus 的学说。<br /><br />同样，在过去十八个月中，Java 社区出现了一种新趋势：即预测 Java 平台的消亡日期。从一些低级的新闻杂志将其称为 90 年代的技术，到夸大其辞的技术演讲者宣传它的现状，再到各种书籍宣称我们正在 “超越” Java 时代，不难发现一点：通过合理的暗示、代码演示、逻辑或统计性说明，Java 正在走向没落。 <br /><br />Malthus 忽略的是那个时候正兴起的工业革命。在 Malthus 一生中，他能够目睹到人类农业生产力的巨大飞跃，这要感谢蒸汽机和轧棉机这些发明。这些发明为他的学说提供了必然的“缺少的一环（missing link）”，它们使粮食产量成倍增长，从而使农业系统能够拟制由“两性激情”制造的沉重的人口负担 。随后，人口控制方面的技术创新对降低人口增长起到了相同的作用，减轻了人口负担，从而造成了很多西方国家出现人口负 增长，因此情况与 Malthus 的相当合理的逻辑完全相悖。而所有这一切在 Malthus 撰写其论文时是无法预见的，使人类能够超过他所预测的农业系统的承受极限而继续存活，并且避免了由此而来的一系列灾难。<br /><br />而技术批评家所忽略的则是 Java 虚拟机的替代语言的兴起引发了巨大的变化。不过不要轻易相信我的一家之言，让我们逐一查看支持这种说法的论证，看看它们是否站得住脚。<br /><br /><span style="font-size: medium"><span style="color: darkblue"><strong>Malthusian 式的 Java 预测</strong></span></span><br /><br />一些人仅仅引用了一些统计性描述，说明 Java 不再是程序员中最重视的语言，就简单的判定 Java 已经在走下坡路。其他人指出 Java 缺乏其替代环境所提供的某些特殊特性，这些特性被标榜为用户及其应用程序的 “需求”。还有一些人发表（毫无事实依据）诸如 “大企业不会再使用 Java” 等言论，从而明确地暗示，如果大企业不使用 Java，那必定是因为这种技术不值得使用。<br /><br />Java 语言，从更大的程度来讲，Java 平台及其生态系统，很早以前就超过了 Simon Peyton-Jones 所谓的 “生存阈值（The Threshold of Immortality）”，就像 C++、C、COBOL 和其他语言所经历的一样。这些工具几乎可以永远存在下去，这是因为它们将继续提供有用的功能，或者是因为重写代码的尝试可能要比继续按原样使用和维护系统付出更多的代价（有关特定语言或系统究竟属于这两个原因的哪一种，存在很多的争议，而这对于本文的目的则无关紧要）。<br /><br />另一个论据让所有聪明人都放弃 Java 而转向平台 X 或语言 Y。在 2005 年的一篇 BusinessWeek 文章 “Java? It's So Nineties”（参见 参考资料）中，引用了很久以前就倒闭的应用服务器公司 NetDynamics 的前 CTO Peter Yared 的话，“Java 像恐龙一样古老”。可是，还未来得及搞清楚利益冲突和推理逻辑，这篇文章就写到 Yared 所有的公司正在尝试在 LAMP（Linux®/Apache/MySQL/P-language）栈之上重新创建应用服务器体验。<br /><br />（这样做可能有些无礼，但我还是要指出 Ruby 的构想实际上早于 Java，同样还包括 Perl 和 Python，更不要说 Linux、Apache 和 MySQL……这里我就不便再多做解释了）。<br /><br />引用我喜欢的一部电影，“生活是痛苦的，殿下。持不同观点的人一定有所企图”。或者，为了更恰当地解释这个主题，可以这样说：“过渡到一个新的平台是痛苦的，CTO 先生。持不同观点的人一定有所企图”。也许并不令人惊讶，对于一些已经重新定位到其他技术领域的 Java 专家来说，情况确实如此。<br /><br />来看看另一个论据，它说 “Java 的顶级语言的位置已经不保，因此它的衰退必定非常悲惨，因此最好避开这场灾难”。这种论据所依据的是一个最基本的前提，即如果 Java 不再是世界上最畅销的技术，则不值得再提供该语言的支持。而这种说法若经过逻辑推理，则根本毫无道理。<br /><br />统计信息很久以来一直被认为是不可靠的（如果使用不当的话），正如 Benjamin Disraeli 的巧妙解释，他说：“世界上有三种谎言：谎言，诅咒和统计”。统计信息可以用来论证最靠不住脚的论据，只需要根据论据仔细挑选所需的统计信息。注意 BusinessWeek 一文中使用的引用：“调查……显示 Java 的使用逐渐没落，而 LAMP 和 Microsoft® 的 .NET 技术势头强劲”。喔，听上去情况不妙。但是，请继续读下去，“根据 Evans 的秋季调查显示，在北美使用 Java 作为其首选编程语言的开发人员的比例已下降到 47.9%，而 2002 年秋为 51.4%”。因此，在过去六年中，在使用 Java 作为其首选 编程语言的开发人员中，使用率下降了 3.5 个百分点。<br /><br />请注意，这里使用了 “首选” 编程语言一词，这意味着开发人员自己需要区别什么是他们的 “首选” 语言。考虑到大量的 XML 配置，使用 Spring/Hibernate/JSP Java 栈的开发人员可能可以很好地判断出 Java 不再是他们的首选语言。<br /><br />注意过去六年中 Java 平台之上兴起的动态语言（Jython、JRuby、Groovy 甚至是 JavaFX），根据我和我的同事（“No Fluff Just Stuff” 的演讲者）在 NFJS 活动的非正式投票中获得的应用数字，这些动态语言可以很轻松地解释这三个百分点的下降。<br /><br />考虑同样摘取自同一篇文章的引用：“在另一份调查中，今天秋季，PHP 在北美的采用已经上升到 36.1%，而 2002 年同期为 26%。其增长速率几乎和欧洲和亚洲一样快”。考虑到这是一个不同的调查系列，它只是为了显示 PHP 的增长，而不是 Java 市场的萎缩。祝贺 PHP，但是任何研究过企业环境的开发人员都可以证明，生产软件部署并不像这篇文章的作者力图暗示的那样是一个零和（zero-sum）游戏。大型 IT 环境通常由种类繁多的工具、平台、语言和产品组成。事实上，我们几乎可以在这里实现 整合，特别是那些大型机组件。<br /><br />谈到主机，事实上，COBOL 在几十年前就不再是最重要的语言了，但是，它现在仍然继续用于现金支付、转移存款、支付信用卡等业务并运行主要的金融网络，尽管很多行业权威早已经宣布了它的 “死亡”。对于本应在坟墓里腐烂的技术，这实在是不错；这使我想起 Mark Twain，当他看到家乡报纸上他的讣告时说：“先生们，关于我死亡的报道被严重夸大了。”<br /><br />然而，撇开统计数字的问题不谈，第二个问题更严重：为什么仅仅因为所选的工具不是最好的就弃而不用？Java 占据软件开发的首要地位近十年，仅仅由于它 “下降” 到第二位，游戏就结束了？甚至认为仅仅因为人们的惰性就会阻止 Java 重新恢复首要语言的位置，事实是，10 个程序员里面有 4 个会继续使用这种语言，这将保证 Java 在未来几十年里仍然保持活跃的生命力。更荒谬的说法是，Java 的增长将面临急刹车，并且再也不会出现 Java 部署，然而，Java 目前在整个行业内得到了广泛的部署，这可以保证 Java 继续出现相当长的时间。<br /><br />尽管 COBOL 被宣布已经死亡，但是要求使用它的人每年达到 6 至 7 位数。<br /><br /><span style="font-size: medium"><strong><span style="color: darkblue">检查证据</span></strong></span><br /><br />然而指出一个论点的缺点并不能证明另一个观点，对于本文也是一样的。相反地，我们应该用批评的眼光看待 Java 语言和平台，而其强项和劣势经受住了严格的分析。Java 之所以长寿在于它能满足未来十年的需求，而不是由任何作者或批评家来决定它的生死。<br /><br />最后，我们考虑一下构成 Java 平台的那些组件：<br /><br />Java 编程语言。坦率地讲，这是平台中最能体现其长寿的部分，特别是与一些诸如 C#、Groovy、(j)Ruby 或 Scala 等更 “现代的” 语言比较时。近来涌现出大量关于改善该语言的建议，诸如为该语言添加闭包等极具竞争力的提议，证明了程序员非常渴望 Java 能够具备其他语言的一些特性。然而，Java 5 中最新语言增强功能所带来的联合成功应该成为所有新的重大语言变更的“注意刹车”的提示。某些增强，比如 for 循环或注释，得到（相对）普遍的支持。然而其他一些增强，比如泛型，则受到（相对）普遍的嘲笑和批评。事实是没有任何一种语言功能能得到它本应帮助的开发人员社区的普遍接受，这个事实告诉我们：为一个已存在十年多的语言添加新的语言特性是很棘手的事情，如果完成，也很可能会导致语言自身的崩溃。在 Java 平台的地图中，这个区域标注着“老水手”的警告：“此处有怪物！”<br /><br /><br />非 Java JVM 编程语言。在 Java 止步不前的地方，其他语言提供改进和增强的解决方法。Groovy 围绕 Java 对象提供了一个动态、客观的脚本解决方案。(j)Ruby 在 JVM 之上提供 Ruby 实现，为 Java 程序员开辟了 Rails 和 ActiveRecordoffers 的世界。Scala 和 Jaskell 给 JVM 引入了函数编程概念，为所出现的并发性问题提供可行的解决方案。诸如此类。由于所有这些语言要么编译成字节码，要么通过 javax.script API 作为解释语言在 JVM 上运行，因此 Java 生态系统的所有财富都是可以利用的— 而这是 Ruby 开发人员无法做出同等声明的一个方面。在 Java 平台的地图中，这个区域被标注为“机遇之国”。<br /><br /><br />Java 虚拟机。 幸运的是，Java 语言已经做出了重大修订和根本性的变化，而 JVM 作为 Java 平台的底层基础，变化并不多。近来，在博客世界中，许多人建议使 JVM 对动态语言更友好，这使 Sun 公司的一名工程师（John Rose）提供了 JVM 的修订版，最初称为多语言虚拟机（ Multi-language virtual machine，MLVM）, 现改名为 Da Vinci Machine（因为紧密地包装在代码中）。此处的关键在于被提议的 JVM 更改要避免任何有可能使 Sun 公司在 JVM 优化上的庞大投资作废的事件。那些提出建议的人在设计细节时一直将这一点牢记于心。<br /><br /><br />Java Standard Edition 库。 Java Standard Edition 附带了巨大的函数集，数量级比 C++ 标准库更大，甚至许多因素比它前身 Java 1.0 都大，并且这还没有考虑 Enterprise Edition 库（接下来讨论）。表面上，这看起来像 Java 开发人员的自然优势，但仔细考虑就会发现一些细微的问题。对初学者而言，库的庞大意味着许多 Java 开发人员认识不到他们在写一些实际已经存在的代码，这些代码收藏在一个在此之前未知的包中。根据存在时间的不同，库本身有时也会遇到 API 设计时间的烦恼，其中有许多 都源于 90 年代中期，那个时候开发人员设计类和库的方式与 2008 年的设计方法截然不同。一部分开发人员也深受抽象过多之苦，正如创建对象构建者的工厂所例证的一样，这些对象构建者创建的接口实例不一定能实现开发人员感兴趣的方法。然而，虽然 JSE 库有缺陷，但从整体来说 JSE 依然有优势，尤其是当它与像 Groovy 提供给 JDK 的扩展（称为 GDK）这样的语言支持增强结合时。 <br /><br /><br />Java Enterprise Edition 库。 没有任何技术能够比 EJB 对其社区产生更大的冲击，并且幸运的是，Java 社区看到了轻量级替代方案的兴起，Spring 和 Hibernate 提供了最后的例证，对这些场景来说，轻量级替代方案是理想选择。然而，如果暂时不考虑 EJB，Java EE 库就是非常成功的 — servlets 和 servlet 容器为遍及 Internet 和企业内部网的大量 Web 应用程序提供动力，JMS 提供对多种面向消息中间件系统的访问，JEE 领域中其他不太知名的参与者（如 JNDI） 毫无怨言地执行自己相应的任务。JEE 库很有可能受益于 API 重新设计，JSE 库就是这样，总体来说 JEE 库将满足 Java 程序员的需要。最大的问题往往在于认识何时首先需要 JEE 库。我们将在另一篇文章中讨论相关内容。<br /><br /><br />Java-API-for-XML (JAX) 库。 尽管名义上是 JEE 库的一部分，但 JAX API 的数量和规模都在以与 JEE 其他部分不相称的速率增长，值得脱离 JEE 的上下文来考虑 JAX API。在近十年，尽管对 XML 支持的需求是巨大并且普遍的，但目前已经有所缓解，尤其是 Web services (WS-*) 周边领域和规范阵营（这些规范允许与其他技术之间实现普遍、轻松的互操作，包括 .NET）。在这里，Java 无疑需要某种类型的修订，由于 SAX、DOM 和 StAX API 经常需要更多的代码来完成重要任务，尤其是和具有更灵活的 XML 支持的语言相比时，比如 E4X、Ruby 或 Scala。此处，以 XML 为中心的思想有了明显的改变，从早期的 WS-* 实现中“不接触 XML”到基于 RESTful 方法的“我希望直接接触 XML 并将其定址为形式良好、有意义的 URI”，这种方法也强调了 JAX 领域内重构的必要性。在 Java 世界的地图中，这个区域被标注为“（应该）弃用的”。<br /><br /><br />客户端 Java。Sun 公司最近修订的“Java客户端”系统的测试版有个相当糟糕的名字 “Java SE 6 Update 10 Beta”，它提供了增强的客户端特性，包括新的 Swing 外观，称为 Nimbus。遗憾的是，在客户端度量 Java 的使用一直都存在问题，主要是因为专门用于度量的 applet 在 Internet 上已经使用了很长一段时间，还因为众多对 Web 托管应用程序的设计和架构关注点都以 HTML 的生成为中心，而不是生成现在所说的“富客户端”应用程序。随着采用速率的提高，Java 要经过漫长的旅程，追赶它在这个领域中的主要竞争对手，Flash 和微软在该领域新引入的技术 Silverlight 使情况变得更加复杂。Java 可能也会彻底失去阵地，这并不代表着这种平台的“消亡”，但会使问题恶化，当业内学者和商业杂志将其称为“Java 技术弱点的明显例证”时，一定要鼓舞自己！<br /><br /><br />服务器端 Java。 这实在不容争议：Java 毫无疑问是服务器领域内既定的参与者，特别是在查看非 Windows® 后端系统环境的选项时。LAMP 系列产品可能提供一个前端或垂直竖井的替代方案，包括 Ruby on Rails 也是一样，但观察重要的服务器计算基础设施时，Java 系列产品将占据显著的位置。事实上，正是这种领先地位促使微软最先积极地寻求 WS-* 规范，以使 .NET 代码至少能调用和配合既定的 Java 基础设施。微软最近认可了使互操作性向更正式的水平发展，他们在剑桥大学设立的“Interoperability Lab”也体现了这一点。<br /><br /><br />生态系统。 没有其他的平台拥有像 Java 平台一样如此丰富多样的生态系统，然而这经常会给 Java 开发人员带来一些麻烦（“我该使用哪种 Web 框架？”），事实上，很多 Java 生态系统都渗入其他环境，尤其是.NET。考虑 .NET 近来在微软内外获得的进步：ObjectBuilder（依赖性注入框架）、ASP MVC（基于 MVC 的 Web 框架）、NHibernate（Hibernate 的一部分）、NAnt 和 MSBuild（在句法或概念上与 Ant 相似的基于 XML 的构建系统）甚至 Silverlight 本身（在浏览器内部托管 CLR，允许执行更丰富的客户端）。在许多方面，.NET 生态系统为 Java 社区做了将近五年的后盾，因为 .NET 开发人员发现了与 Java 开发人员在五年前遭遇的相同痛点。而 Java 仍然坚持向 .NET 社区学习（比如统一通信 API 的有用性或显式轻量级工作流引擎的强大力量）。这只用来说明这些环境都正在互相学习这一事实，而且也表明，.NET 并没有使 Java 成为不必要的能力。 <br />毫无疑问，Java 开发人员可以将他们自己的条目添加到这个列表中，证明这个论点：在 Java 平台中留有太多的优良的东西被认为“死亡了”或“将要死亡”或者甚至在“崩溃的边缘”。<br /> <br /><br /><span style="font-size: medium"><strong><span style="color: darkblue">王者终将归来</span></strong></span><br /><br />最简单的事实是：Java、平台、生态系统、环境和开发社区与死亡相去甚远，至少和目前正在使用的其他语言或平台距离一样远。即使是最严格的统计事实筛选也不能否认 Java 的领先地位。<br /><br />此外，即使 Sun Microsystems 公司倒闭，平台也不会消亡。全世界的 Java 开发人员，联合起来！不要惧怕束缚的铁链：最终您将看到，这些铁链其实并不存在。多亏 Java 平台的开源，它现在被称为 OpenJDK，更不要说 Java 的其他开源“净室（clean room）”实现（Apache Harmony 和 Soy Latte 只是其中之二），即使 Sun 公司彻底从地球上消失，包括 IBM®、Apache、BEA 和 Oracle 在内的其他实体也能继续提供 JVM、库和工具，来支持整体生态系统。<br /><br />Java 总有一天会消亡？绝对会的，但是我坚信 Java 的寿命会超过今天的程序员所使用的大部分语言，正如 COBOL 做到的那样。它甚至能比刚刚走出大学校园的第二代 Java 程序员走的更长。<br /><br />“恐龙”，确实如此。<br /><br />参考资料：<br />您可以参阅本文在 developerWorks 全球站点上的 <a href="http://www.ibm.com/developerworks/java/library/j-cobol.html?S_CMP=cn-a-j&S_TACT=105AGX52" target="_blank">英文原文</a> 。<br />请阅读 <a href="http://www.ac.wwu.edu/~stephan/malthus/malthus.0.html" target="_blank">"Essay on the Principle of Population"</a>。<br />请阅读文章 "<a href="http://www.ibm.com/developerworks/blogs/page/scott?entry=java_still_hot_or_losing" target="_blank">Java? It's So Nineties</a>" （商业周刊，2005 年 12 月）。<br />Podcast： Java, still hot or losing its flavor? （developerWorks, 2008 年 5 月）：作者及其同事 developerWorks 贡献者 Scott Davis 讨论了 Java 平台的寿命。<br />其他链接：<br /><a href="http://zjdycdy.blog.163.com" target="_blank">千祥新闻</a><br /><a href="http://www.geedao.com" target="_blank">杭州捷道软件</a>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/208022#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 25 Jun 2008 21:36:23 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/208022</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/208022</guid>
      </item>
      <item>
        <title>ExReport(v0.1发布)_基于Excel，最贴近用户和开发者的报表系统。</title>
        <author>kimmking</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kimmking.javaeye.com">kimmking</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/206038" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/206038</a>&nbsp;
          发表时间: 2008年06月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1 style="margin: 17pt 0cm 16.5pt; text-align: center;"><span style="font-size: x-large;"><span lang="EN-US"><span style="font-family: Times New Roman;">ExReport</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">报表用户文档</span></span></h1>
<p>
<table class="MsoTableGrid" cellspacing="0" border="1" cellpadding="0" style="border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext;">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td valign="top" width="199" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 149.4pt; padding-top: 0cm; background-color: transparent; mso-border-alt: solid windowtext .5pt; border: windowtext 1pt solid;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">当前版本</span></span></p>
</td>
<td valign="top" width="369" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 276.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">V0.1</span></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td valign="top" width="199" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 149.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">文档作者</span></span></p>
</td>
<td valign="top" width="369" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 276.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">Kimmking </span></span><span lang="EN-US"><span style="font-family: Times New Roman;">wanghaibin </span></span></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes;">
<td valign="top" width="199" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 149.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">修订日期</span></span></p>
</td>
<td valign="top" width="369" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 276.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">2008</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">年</span><span lang="EN-US"><span style="font-family: Times New Roman;">6</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">月</span><span lang="EN-US"><span style="font-family: Times New Roman;">20</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">日</span><span lang="EN-US"><span style="font-family: Times New Roman;">6:06:09</span></span></span></p>
</td>
</tr>
</tbody>
</table>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<h2 style="margin: 13pt 0cm;"><span style="font-size: large;"><span style="font-family: 黑体; mso-ascii-font-family: Arial;">声</span><span style="font-family: Arial;"> </span><span style="font-family: 黑体; mso-ascii-font-family: Arial;">明</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">项目站点</span><span lang="EN-US"><span style="font-family: Times New Roman;">: http://code.google.com/p/exreport/</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">ExReport</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">报表系统</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">授权方式</span><span lang="EN-US"><span style="font-family: Times New Roman;">:LGPL</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">作者：</span><span lang="EN-US"><span style="font-family: Times New Roman;">kimmking&nbsp; </span></span><span lang="EN-US"><span style="font-family: Times New Roman;">wanghaibin</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">你可以基于各种目的免费使用本报表，无论是个人的目的还是商业性的，使用时请保留本文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">唯一的一个建议是：如果你修改了本系统的一部分或者全部，请给本报表的作者发一封</span><span lang="EN-US"><span style="font-family: Times New Roman;">email</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">来说明</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">你改进了什么和大概是如何做到的。（仅仅是一个建议）</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">作者</span><span lang="EN-US"><span style="font-family: Times New Roman;">email (kimmking.cn@gmail.com)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">如果你因为商业性的目的，想用本报表来改进你的系统，并且需要我们的协助。请联系我们。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">+86 13488713022.</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span class="2Char"><span lang="EN-US" style="font-size: 16pt; mso-bidi-font-family: 'Times New Roman';"><span style="font-family: Arial;">ExReport</span></span></span><span class="2Char"><span style="font-size: 16pt; font-family: 黑体; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: Arial;">资源</span></span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">所有源代码：</span><span lang="EN-US"><span style="font-family: Times New Roman;">svn checkout http://exreport.googlecode.com/svn/trunk/</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">release</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">下载：</span><span lang="EN-US"><span style="font-family: Times New Roman;">http://code.google.com/p/exreport/downloads/list</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<h2 style="margin: 13pt 0cm;"><span style="font-size: large;"><span lang="EN-US"><span style="font-family: Arial;">ExReport</span></span><span style="font-family: 黑体; mso-ascii-font-family: Arial;">报表简介</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">基于</span><span lang="EN-US"><span style="font-family: Times New Roman;">Excel</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，最贴近用户和开发者的报表系统。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">报表由数据和模板组成。数据为服务器端传递的用以生成报表所需的各种数据。模板为一个</span><span lang="EN-US"><span style="font-family: Times New Roman;">Excel</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">文件，内置了处理数据和生成报表的通用</span><span lang="EN-US"><span style="font-family: Times New Roman;">VBA</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">宏。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">整个数据处理和生成报表都在客户端，减小了服务器端压力。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">ExReport</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">提供了序列化数据的服务器端程序、处理数据生成报表的</span><span lang="EN-US"><span style="font-family: Times New Roman;">vba</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">程序、下载文件的</span><span lang="EN-US"><span style="font-family: Times New Roman;">activex</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">组件和在</span><span lang="EN-US"><span style="font-family: Times New Roman;">web</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">页面展示</span><span lang="EN-US"><span style="font-family: Times New Roman;">Excel</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的</span><span lang="EN-US"><span style="font-family: Times New Roman;">activex</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">组件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">目前</span><span lang="EN-US"><span style="font-family: Times New Roman;">v0.1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">版本只提供了无限级的交叉报表，其通过网页上的</span><span lang="EN-US"><span style="font-family: Times New Roman;">json</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">变量</span><span lang="EN-US"><span style="font-family: Times New Roman;">bean</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">来传递数据到</span><span lang="EN-US"><span style="font-family: Times New Roman;">dsoframer</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中加载的</span><span lang="EN-US"><span style="font-family: Times New Roman;">Excel</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">模板。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">计划</span><span lang="EN-US"><span style="font-family: Times New Roman;">2008</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">年</span><span lang="EN-US"><span style="font-family: Times New Roman;">7</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">月初发布一个</span><span lang="EN-US"><span style="font-family: Times New Roman;">1.0</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的正式版，提供如下功能（均以实现，都在整理代码）：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l2 level1 lfo4; tab-stops: list 18.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">1、</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">展示数据的普通报表。（一般的表格。）</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l2 level1 lfo4; tab-stops: list 18.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">2、</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">对于大数据量的异步加载方式。（不考虑网络因素，对于</span><span lang="EN-US"><span style="font-family: Times New Roman;">60M</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">数据量，</span><span lang="EN-US"><span style="font-family: Times New Roman;">40S</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">左右出表。）</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt; mso-list: l2 level1 lfo4; tab-stops: list 18.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">3、</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">更为详细的文档或手册。</span></span></p>
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center;">&nbsp;</p>
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><img src="../../upload/picture/pic/16371/3c819b02-1e02-32ff-aa11-e3fc00904842.jpg" height="370" alt="" width="372" /></span></span></p>
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">图</span><span lang="EN-US"><span style="font-family: Times New Roman;">1</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">、</span><span lang="EN-US"><span style="font-family: Times New Roman;">ExReport</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">系统</span></span></p>
<h2 style="margin: 13pt 0cm;"><span style="font-size: large;"><span lang="EN-US"><span style="font-family: Arial;">ExReport</span></span><span style="font-family: 黑体; mso-ascii-font-family: Arial;">报表基本功能</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">1.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">导出报表</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">2.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">打印报表</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">3.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">打印预览</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">4.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">报表转置</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">5.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">报表放大</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">6.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">报表缩小</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l0 level1 lfo3; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">7.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">隐藏</span><span lang="EN-US"><span style="font-family: Times New Roman;">/</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">显示指定列</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<h2 style="margin: 13pt 0cm;"><span style="font-family: 黑体; mso-ascii-font-family: Arial;"><span style="font-size: large;">本报表使用的系统软件环境</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">Windows xp/2003</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">IE 5.*/6.*/7.*</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">Excel 2000/xp/2003/2007</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">此环境即可演示本地的报表示例。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<h2 style="margin: 13pt 0cm;"><span style="font-family: 黑体; mso-ascii-font-family: Arial;"><span style="font-size: large;">本报表支持的开发环境</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">web</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">（</span><span lang="EN-US"><span style="font-family: Times New Roman;">asp</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">asp</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。</span><span lang="EN-US"><span style="font-family: Times New Roman;">net</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">php</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">jsp</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">），</span><span lang="EN-US"><span style="font-family: Times New Roman;">java</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">程序，</span><span lang="EN-US"><span style="font-family: Times New Roman;">swt</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">vb</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">vc</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;">delphi</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，</span><span lang="EN-US"><span style="font-family: Times New Roman;"> .net winform</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">等各种支持</span><span lang="EN-US"><span style="font-family: Times New Roman;">activex</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的系统下使用。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">目前整理的</span><span lang="EN-US"><span style="font-family: Times New Roman;">web</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">项目示例为</span><span lang="EN-US"><span style="font-family: Times New Roman;">jsp</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">示例</span><span lang="EN-US"><span style="font-family: Times New Roman;">,</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">需要</span><span lang="EN-US"><span style="font-family: Times New Roman;">jre</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">环境和</span><span lang="EN-US"><span style="font-family: Times New Roman;">jsp</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">服务器（如</span><span lang="EN-US"><span style="font-family: Times New Roman;">tomcat5.x</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">等）的支持。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">Demo</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">项目为</span><span lang="EN-US"><span style="font-family: Times New Roman;">myeclipse</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">项目，可以使用</span><span lang="EN-US"><span style="font-family: Times New Roman;">myeclipse</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">导入直接查看所有项目源码。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<h2 style="margin: 13pt 0cm;"><span style="font-size: large;"><span style="font-family: 黑体; mso-ascii-font-family: Arial;">部署</span><span lang="EN-US"><span style="font-family: Arial;">ExReport</span></span><span style="font-family: 黑体; mso-ascii-font-family: Arial;">报表</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">1.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">下载</span><span lang="EN-US"><span style="font-family: Times New Roman;">all.zip</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">到本地。解压文件，双击运行</span><span lang="EN-US"><span style="font-family: Times New Roman;">ocx</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">目录的</span><span lang="EN-US"><span style="font-family: Times New Roman;">reg.bat</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">注册</span><span lang="EN-US"><span style="font-family: Times New Roman;">activex</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">组件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">2.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">打开</span><span lang="EN-US"><span style="font-family: Times New Roman;">excel</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，依次点击&ldquo;工具&rdquo;&ldquo;选项&rdquo;&ldquo;安全性&rdquo;&ldquo;宏安全性&rdquo;，将&ldquo;安全级&rdquo;设置为低。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">3.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">打开</span><span lang="EN-US"><span style="font-family: Times New Roman;">IE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">浏览器，依次点击&ldquo;工具&rdquo;&ldquo;</span><span lang="EN-US"><span style="font-family: Times New Roman;">Internet</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">选项&rdquo;&ldquo;安全&rdquo;&ldquo;可信站点&rdquo;&ldquo;站点&rdquo;，将本网址，默认的</span><span lang="EN-US"><span style="font-family: Times New Roman;">demo</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">是</span><span lang="EN-US"><a href="http://localhost/"><span style="font-family: Times New Roman;">http://localhost</span></a></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">添加到信任区域，同时将此区域的安全级别设置为低。如果要运行本地的</span><span lang="EN-US"><span style="font-family: Times New Roman;">release</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">示例，需要将&ldquo;本地</span><span lang="EN-US"><span style="font-family: Times New Roman;">Internat</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&rdquo;的安全级别也设置为低。</span></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; text-align: left; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt; mso-layout-grid-align: none;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">4.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">打开</span><span lang="EN-US"><span style="font-family: Times New Roman;">release</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">目录下的</span><span lang="EN-US"><span style="font-family: Times New Roman;">report1.html</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">文件。</span></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; text-align: left; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt; mso-layout-grid-align: none;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">5.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">将</span></span><span style="font-size: 9pt; color: #0000ff; font-family: 新宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes;">var</span><span style="font-size: 9pt; font-family: 新宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes;"> localfolder = <span style="color: #a31515;">"D:\\qsoft\\exreport\\exreport\release\\"</span>; <span style="color: #008000;">//</span></span><span style="font-size: 9pt; color: #008000; font-family: 新宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes;">你需要把这个路径改为你实际的绝对路径。不可使用相对路径。</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span style="font-size: small;">中的文件夹路径修改为此文件夹的实际路径。保存文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l1 level1 lfo1; tab-stops: list 21.0pt;"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;"><span style="font-family: Times New Roman;"><span style="font-size: small;">6.</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在</span><span lang="EN-US"><span style="font-family: Times New Roman;">IE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中打开</span><span lang="EN-US"><span style="font-family: Times New Roman;">report1.html</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">文件，如果</span><span lang="EN-US"><span style="font-family: Times New Roman;">IE</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">出现</span><span lang="EN-US"><span style="font-family: Times New Roman;">activex</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">安全提示，双击提示，允许</span><span lang="EN-US"><span style="font-family: Times New Roman;">activex</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">运行。如果能生成如下图的报表，证明部署报表成功。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"><img src="http://www.javaeye.com/upload/picture/pic/16373/b3ff598c-594f-3dcb-a667-710350e5caaa.png?1213917356" height="628" alt="" width="1280" />&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" align="center" style="margin: 0cm 0cm 0pt; text-align: center;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">图</span><span lang="EN-US"><span style="font-family: Times New Roman;">2</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">、</span><span lang="EN-US"><span style="font-family: Times New Roman;">ExReport</span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">示例之一</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<h2 style="margin: 13pt 0cm;"><span style="font-family: 黑体; mso-ascii-font-family: Arial;"><span style="font-size: large;">报表开发使用说明</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l3 level1 lfo2; tab-stops: list 21.0pt;"><span style="font-family: Times New Roman;"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman';"><span style="mso-list: Ignore;">1.<span style="font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size: 14pt;">ExReport</span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">报表模板的定义</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">ExReport</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">整个报表区域可以分为报表头和报表体两部分。报表所需的全部数据在服务器端表示为一个</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">HashMap</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。参见</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">demo</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">项目。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">报表头包括标题（例如&ldquo;</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">xxxx</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">报表&rdquo;）和报表参数（例如&ldquo;制表人：</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">xxx</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">&rdquo;、&ldquo;单位：万元&rdquo;等等）。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">报表体包括列标题区（一级或多级的列标题），行标题区（一级或多级的行标题）和数据区。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">本报表规定：</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">使用</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">#{exreport.crosstab.metadata.A}</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">表示报表标题和参数，</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">A</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">表示参数名，服务器端序列化的</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">map</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中存其键值对。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">分别使用</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">#{exreport.crosstab.row.P}</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">#{exreport.crosstab.column.P}</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">表示报表行标题和列标题，均可以有多级，</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">P</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">表示</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">bean</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中数据对象</span></span><span style="font-size: 9pt; color: #a31515; font-family: 新宋体; mso-font-kerning: 0pt; mso-hansi-font-family: 'Times New Roman'; mso-no-proof: yes;">DTO_DATA_ARRAYS</span><span style="font-size: small;"><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">对应的属性的名称，与服务器端</span><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-family: Times New Roman;">Dto</span></span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的属性名称对应。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-size: small; font-family: Times New Roman;">--------------------------</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-bidi-font-size: 10.5pt;"><span style="font-size: small; font-family: Times New Roman;">貌似太多了，发不下了。 详见文档。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt; mso-list: l3 level1 lfo2; tab-stops: list 21.0pt;">&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/206038#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 20 Jun 2008 07:18:25 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/206038</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/206038</guid>
      </item>
      <item>
        <title>jsf组件与el表达式的关系的一点理解</title>
        <author>yourenyouyu2008</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yourenyouyu2008.javaeye.com">yourenyouyu2008</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/204098" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/204098</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>前段时间在测试a4j时发现不能在el中传递参数，比如&lt;a:support event="onclick" actionListener="#{checkeableList.selectAll('hotels')}" 是不行的，页面编译都不过，当时就认为是a标签的问题，而在seam中却是可以的，比如&lt;s:link&nbsp; value="View Hotel" action="#{hotelBooking.selectHotel(wrap.data)}"/&gt;，认为是seam标签对el进行了扩展。最近一网友说&lt;a:support event="onclick" actionListener="#{checkeableList.selectAll('hotels')}"在seam中是没问题，结果测试正是如此，突然醒悟，原来组件和el是两个分离的东西，组件只把el当成一个普通的文本，至于表达式是否正确是由el来处理的。在单纯的jsf环境下&lt;a:support event="onclick" actionListener="#{checkeableList.selectAll('hotels')}"是不正确的，说明jsf的el认为这个表达式是不对的，如果换成seam的扩展表达式就没问题了。</p>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/204098#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 13:34:05 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/204098</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/204098</guid>
      </item>
      <item>
        <title>JAVA里的常用正则表达式验证</title>
        <author>lxdhdgss</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://luxiangdong.javaeye.com">lxdhdgss</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/204048" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/204048</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          前段时间整理了一下正则表达式的验证，现在帖出来，希望对大家有用处。<br /><pre name="code" class="java">
package com.geedao.util;

/**
 * @author 卢向东 lxdhdgss@gmail.com 检验输入
 */
public class Regex {

	/**
	 * 检查email输入是否正确
	 * 正确的书写格式为 username@domain
	 * @param value
	 * @return
	 */
	public boolean checkEmail(String value, int length) {
			return value.matches("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*")&&value.length()&lt;=length;
	}

	/**
	 * 检查电话输入是否正确
	 * 正确格式 012-87654321、0123-87654321、0123－7654321
	 * @param value
	 * @return
	 */
	public boolean checkTel(String value) {
		return value.matches("\\d{4}-\\d{8}|\\d{4}-\\d{7}|\\d(3)-\\d(8)");	
	}

	/**
	 * 检查手机输入是否正确
	 * 
	 * @param value
	 * @return
	 */
	public boolean checkMobile(String value) {
		return value.matches("^[1][3,5]+\\d{9}");
	}

	/**
	 * 检查中文名输入是否正确
	 * 
	 * @param value
	 * @return
	 */
	public boolean checkChineseName(String value, int length) {
		return value.matches("^[\u4e00-\u9fa5]+$")&&value.length()&lt;=length;
	}
	/**
	 * 检查HTML中首尾空行或空格
	 * @param value
	 * @return
	 */
	public boolean checkBlank(String value){
		return value.matches("^\\s*|\\s*$");
	}
	/**
	 * 检查字符串是否含有HTML标签
	 * @param value
	 * @return
	 */
	
	public boolean checkHtmlTag(String value){
		return value.matches("&lt;(\\S*?)[^>]*>.*?&lt;/\\1>|&lt;.*? />");
	}
	/**
	 * 检查URL是否合法
	 * @param value
	 * @return
	 */
	public boolean checkURL(String value){
		return value.matches("[a-zA-z]+://[^\\s]*");
	}
	/**
	 * 检查IP是否合法
	 * @param value
	 * @return
	 */
	public boolean checkIP(String value){
		return value.matches("\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}+\\.\\d{1,3}");
	}
	/**
	 * 检查ID是否合法，开头必须是大小写字母，其他位可以有大小写字符、数字、下划线
	 * @param value
	 * @return
	 */
	public boolean checkID(String value){
		return value.matches("[a-zA-Z][a-zA-Z0-9_]{4,15}$");
	}
	/**
	 * 检查QQ是否合法，必须是数字，且首位不能为0，最长15位
	 * @param value
	 * @return
	 */
	
	public boolean checkQQ(String value){
		return value.matches("[1-9][0-9]{4,13}");
	}
	/**
	 * 检查邮编是否合法
	 * @param value
	 * @return
	 */
	public boolean checkPostCode(String value){
		return value.matches("[1-9]\\d{5}(?!\\d)");
	}
	/**
	 * 检查身份证是否合法,15位或18位
	 * @param value
	 * @return
	 */
	public boolean checkIDCard(String value){
		return value.matches("\\d{15}|\\d{18}");
	}
	/**
	 * 检查输入是否超出规定长度
	 * 
	 * @param length
	 * @param value
	 * @return
	 */
	public boolean checkLength(String value, int length) {
		return ((value == null || "".equals(value.trim())) ? 0 : value.length()) &lt;= length;
	}

	/**
	 * 检查是否为空字符串,空：true,不空:false
	 * 
	 * @param value
	 * @return
	 */
	public boolean checkNull(String value) {
		return value == null || "".equals(value.trim());
	}

}
</pre><br />我自己根据书上和网上的资料综合整理的。<br />其他链接：<br /><a href="http://www.geedao.com" target="_blank">中小企业软件</a><br /><a href="http://zjdycdy.blog.163.com" target="_blank">千祥新闻</a><br /><a href="http"//www.sapphireoil.cn" target="_blank">浙江赛孚</a>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/204048#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 11:47:06 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/204048</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/204048</guid>
      </item>
      <item>
        <title>谷歌技术不如百度？！</title>
        <author>lxdhdgss</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://luxiangdong.javaeye.com">lxdhdgss</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/202294" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/202294</a>&nbsp;
          发表时间: 2008年06月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近对写博客感兴趣起来，四处注册了好几个博客。当然javaeye还是我最常来的，毕竟自己是做技术的人。<br />写了博客，就希望别人来观看、来点评，这就自然少不了搜索引擎的帮忙，所以对中国搜索引擎市场最大的两个搜索引擎<a href="http://www.baidu.com" target="_blank">百度</a>和<a href="http://www.google.cn" target="_blank">谷歌</a>特别关注了起来。<br />一直听朋友说谷歌在中文处理上不如百度，市场占有率也很低，关于市场占有率这点我在<a href="http://www.techcrunch.com/2008/03/18/the-web-in-charts%e2%80%94google-vs-microsoft-yahoo-vs-china/" target="_blank">TechCrunch</a>上倒是真的得到了验证，如下图，2008一月份的GOOGLE世界各地占有率。<br /><img src="http://luxiangdong.javaeye.com/upload/attachment/27252/ca79b7b1-5826-3848-8ee8-a8f348a7b75a.png" /><br />在中国谷歌只有19%。是不是谷歌的技术真的不如百度呢？<br />我进行了一些简单的验证：<br />1.收录速度和容量：我不久前刚刚在百度注册了一个空间：<a href="http://hi.baidu.com/lxdhdgss" target="_blank">千祥热点</a>，但是奇怪的是，谷歌上早就已经收录了我的百度空间里的文章，而百度上却没有。还有就是javaeye里的这个博客，百度里只有两条内容，而谷歌上却有十几条。谷歌的收录容量比百度大，这个是不用怀疑了。<br />2.对中文的理解方面：我分别在谷歌和百度上搜“杭州 钱柜 在哪”，最让人关心的前3条里面却出现了戏剧性的结果。<br />百度：<br /><img src="http://luxiangdong.javaeye.com/upload/attachment/27257/04de4dfe-1edf-3c61-a08a-f19fc96f5ffa.jpg" /><br />谷歌：<br /><img src="http://luxiangdong.javaeye.com/upload/attachment/27255/c1948569-00cd-3055-9f23-60d977c88482.jpg" /><br />百度的前两个结果里面没有没有关于地址的信息，第二条结果很可惜，已经调用了强大的百度知道了，可是查的确实网址，看来百度对“在哪”也不是很敏感。第三条结果是准确的显示了杭州钱柜的地址了。<br />而谷歌呢，前两条也没有，而对于第三条，却用百度知道来显示钱柜的地址，公交路线等。我想百度肯定会很不爽，自己的武器却让对手给用了。<br />所以对中文的处理上两者打平手。<br />3.人性化。这点我想基本已经不用比了，谷歌的自动完成功能绝对把这一项比较拿下了。<br />所以综合起来，百度还真的不如谷歌。国人的技术要加油了，不要老用一些幼稚的东西来吸引年轻的用户，战略这么打是没错，从娃娃抓起，可一旦在真正的应用领域，还是要看技术实力的。就如网上有人说，高层人士基本用Google，网吧用户(网吧多把百度设为默认搜索引擎)、MP3下载、知道等才是百度的主流用户。<br />一些链接：<br /><a href="http://lucore.blog.163.com" target="_blank">千祥卢向东</a><br /><a href="http://hi.baidu.com/lxdhdgss" target="_blank">千祥热点</a><br /><a href="http://www.geedao.com" target="_blank">捷道软件</a>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/202294#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 11 Jun 2008 22:08:48 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/202294</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/202294</guid>
      </item>
      <item>
        <title>给h:selectOneMenu增加一个不会提交的选项</title>
        <author>yourenyouyu2008</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yourenyouyu2008.javaeye.com">yourenyouyu2008</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/201193" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/201193</a>&nbsp;
          发表时间: 2008年06月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>问题描述：</p>
<p>目前我所实验过的h:selectOneMenu的每个f:selectItem如果被选中，当表单提交后h:selectOneMenu就有值了，即使选中的f:selectItem 的itemDisabled="true"也照样会被提交，这样就不是我们想要的了，比如我们的下拉项中的第一个是&ldquo;---请选择--&rdquo;，这表明我们还没有选择，那么提交后选择框是不应该有值的。</p>
<p>解决办法：</p>
<p>在该值的set方法中判断，如果是&ldquo;--请选择--&rdquo;选项对应的值就不直接放回，这样它的值就还是null，相当与没有选择任何选项。</p>
<p>&lt;h:selectOneMenu value="classA.type"&gt;<br />&nbsp;&nbsp;&lt;f:selectItem itemVlue="0"&gt;请选项&lt;/f:selectItem&gt;<br />&nbsp;&nbsp;&lt;f:selectItem itemVlue="1"&gt;选项1&lt;/f:selectItem&gt;<br />&nbsp;&nbsp;&lt;/h:selectOneMenu&gt;</p>
<p>&nbsp;</p>
<p>public void setType(String type){</p>
<p>if("0".equals(type))return;</p>
<p>this.type=type;</p>
<p>}</p>
<p>希望的解决办法：</p>
<p>1)itemDisabled="true"属性起到作用，选择后不会提交</p>
<p>2）给h:selectOneMenu增加个属性，说明第几项开始后的选项才会被提交。</p>
<p>以前用过的webwork中下来组件有这种功能，可能selectOneMenu也可以，请高手们执教如何使用。</p>
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/201193#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 07 Jun 2008 17:48:52 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/201193</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/201193</guid>
      </item>
      <item>
        <title>编码转换</title>
        <author>Angelialily</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://angelialily.javaeye.com">Angelialily</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/200983" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/200983</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          E:\>native2ascii  原文件.txt  生成文件.property
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/200983#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 15:56:06 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/200983</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/200983</guid>
      </item>
      <item>
        <title>内联结、外联结、左联结、右联结的含义及区别</title>
        <author>Angelialily</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://angelialily.javaeye.com">Angelialily</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/200981" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/200981</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          内联结、外联结、左联结、右联结的含义及区别：<br /><br />在SQL标准中规划的（join）联结大致分为下面四种：<br />1．内联结：将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结。<br />2．外联结：分为外左联结和外右联结。左联结A、B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结，这里注意的是最后出来的记录集会包括表A的全部记录。右联结A、B表的结果和左联结B、A的结果是一样的，也就是说： select A.name B.name From A Left join B On A.id=B.id 和select A.name B.name From B Right join A on B.id=A.id执行后的结果是一样的。<br />3．全联结：将两个表中存在联结关系的字段的所有记录取出形成记录集的联结（这个不需要记忆，只要是查询中提到了的表的字段都会取出，无论是否符合联结条件，因此意义不大）。<br />4．无联结：不用解释了吧，就是没有使用联结功能呗，也有自联结的说法。这里我有个比较简便的记忆方法，内外联结的区别是内联结将去除所有不符合条件的记录，而外联结则保留其中部分。外左联结与外右联结的区别在于如果用A左联结B则A中所有记录都会保留在结果中，此时B中只有符合联结条件的记录，而右联结相反，这样也就不会混淆了。其实大家回忆高等教育出版社出版的《数据库系统概论》书中讲到关系代数那章（就是将笛卡儿积和投影那章）的内容，相信不难理解这些联结功能的内涵。<br /><br />2． MySQL联结（join）的语法：<br /><br /> MySQL支持select和某些update和delete情况下的join语法，具体语法上的细节有： table_references: table_reference [, table_reference] … table_reference: table_factor | join_table table_factor: tbl_name [[AS] alias] [{USE|IGNORE|FORCE} INDEX (key_list)] | ( table_references ) | { OJ table_reference LEFT OUTER join table_reference ON conditional_expr } join_table: table_reference [INNER | CROSS] join table_factor [join_condition] | table_reference STRAIGHT_join table_factor | table_reference STRAIGHT_join table_factor ON condition | table_reference LEFT [OUTER] join table_reference join_condition | table_reference NATURAL [LEFT [OUTER]] join table_factor | table_reference RIGHT [OUTER] join table_reference join_condition | table_reference NATURAL [RIGHT [OUTER]] join table_factor join_condition: ON conditional_expr | USING (column_list)<br /><br />上面的用法摘自权威资料，不过大家看了是否有点晕呢？呵呵，应该问题主要还在于table_reference是什么，table_factor又是什么？这里的table_reference其实就是表的引用的意思，因为在MySQL看来，联结就是一种对表的引用，因此把需要联结的表定义为table_reference，同时在SQL Standard中也是如此看待的。而table_factor则是MySQL对这个引用的功能上的增强和扩充，使得引用的表可以是括号内的一系列表，如下面例子中的join后面括号：<br /><br />select * FROM t1 LEFT join (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)<br /><br />这个语句的执行结果和下面语句其实是一样的：<br /><br />select * FROM t1 LEFT join (t2 CROSS join t3 CROSS join t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)<br /><br />这两个例子不仅让我们了解了MySQL中table_factor和table_reference含义，同时能理解一点CROSS join的用法，我要补充的是在MySQL现有版本中CROSS join的作用和INNER join是一样的（虽然在SQL Standard中是不一样的，然而在MySQL中他们的区别仅仅是INNER join需要附加ON参数的语句，而CROSS join不需要）。<br /><br />既然说到了ON语句，那就解释一下吧，ON语句其实和where语句功能大致相当，只是这里的ON语句是专门针对联结表的，ON语句后面的条件的要求和书写方式和where语句的要求是一样的，大家基本上可以把ON当作where用。大家也许也看到了OJ table_reference LEFT OUTER join table_reference这个句子，这不是MySQL的标准写法，只是为了和ODBC的SQL语法兼容而设定的，我很少用，Java的人更是不会用，所以也不多解释了。<br /><br />那下面就具体讲讲简单的join的用法了。首先我们假设有2个表A和B，他们的表结构和字段分别为：<br /><br />表A： ID Name 1 Tim 2 Jimmy 3 John 4 Tom<br /><br />表B： ID Hobby 1 Football 2 Basketball 2 Tennis 4 Soccer<br /><br />1． 内联结： select A.Name B.Hobby from A, B where A.id = B.id，这是隐式的内联结，查询的结果是： Name Hobby Tim Football Jimmy Basketball Jimmy Tennis Tom Soccer 它的作用和 select A.Name from A INNER join B ON A.id = B.id是一样的。这里的INNER join换成CROSS join也是可以的。<br />2． 外左联结 select A.Name from A Left join B ON A.id = B.id，典型的外左联结，这样查询得到的结果将会是保留所有A表中联结字段的记录，若无与其相对应的B表中的字段记录则留空，结果如下： Name Hobby Tim Football Jimmy Basketball，Tennis John Tom Soccer 所以从上面结果看出，因为A表中的John记录的ID没有在B表中有对应ID，因此为空，但Name栏仍有John记录。<br />3． 外右联结 如果把上面查询改成外右联结：select A.Name from A Right join B ON A.id = B.id，则结果将会是： Name Hobby Tim Football Jimmy Basketball Jimmy Tennis Tom Soccer 这样的结果都是我们可以从外左联结的结果中猜到的了。说到这里大家是否对联结查询了解多了？这个原本看来高深的概念一下子就理解了，恍然大悟了吧（呵呵，开玩笑了）？<br /><br />最后给大家讲讲MySQL联结查询中的某些参数的作用：<br />1．USING (column_list)：其作用是为了方便书写联结的多对应关系，大部分情况下USING语句可以用ON语句来代替，如下面例子： a LEFT join b USING (c1,c2,c3)，其作用相当于下面语句 a LEFT join b ON a.c1=b.c1 AND a.c2=b.c2 AND a.c3=b.c3 只是用ON来代替会书写比较麻烦而已。<br />2．NATURAL [LEFT] join：这个句子的作用相当于INNER join，或者是在USING子句中包含了联结的表中所有字段的Left join（左联结）。<br />3．STRAIGHT_join：由于默认情况下MySQL在进行表的联结的时候会先读入左表，当使用了这个参数后MySQL将会先读入右表，这是个MySQL的内置优化参数，大家应该在特定情况下使用，譬如已经确认右表中的记录数量少，在筛选后能大大提高查询速度。<br /><br />最后要说的就是，在MySQL5.0以后，运算顺序得到了重视，所以对多表的联结查询可能会错误以子联结查询的方式进行。譬如你需要进行多表联结，因此你输入了下面的联结查询：<br /><br />select t1.id,t2.id,t3.id FROM t1,t2 LEFT join t3 ON (t3.id=t1.id) where t1.id=t2.id;<br /><br />但是MySQL并不是这样执行的，其后台的真正执行方式是下面的语句：<br /><br />select t1.id,t2.id,t3.id FROM t1,( t2 LEFT join t3 ON (t3.id=t1.id) ) where t1.id=t2.id;<br /><br />这并不是我们想要的效果，所以我们需要这样输入：<br /><br />select t1.id,t2.id,t3.id FROM (t1,t2) LEFT join t3 ON (t3.id=t1.id) where t1.id=t2.id;
          <br/>
          <span style="color:red;">
            <a href="http://JSFgroup.group.javaeye.com/group/blog/200981#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 15:53:02 +0800</pubDate>
        <link>http://JSFgroup.group.javaeye.com/group/blog/200981</link>
        <guid>http://JSFgroup.group.javaeye.com/group/blog/200981</guid>
      </item>
      <item>
        <title>jsf多表头实现</title>
        <author>zhoulei984623</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://crazysky.javaeye.com">zhoulei984623</a>&nbsp;
          链接：<a href="http://JSFgroup.group.javaeye.com/group/blog/199331" style="color:red;">http://JSFgroup.group.javaeye.com/group/blog/199331</a>&nbsp;
          发表时间: 2008年06月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一个简单的例子：<br /><pre name="code" class="java">
&lt;t:dataTable var="info" value="#{backBean.datalist}"
	width="100%" rows="10"
	rowIndexVar="rowIndex">
	&lt;t:column headerstyleClass="headStyleClass" width="34%">
		&lt;f:facet name="header">
			&lt;h:outputText value="Owner">&lt;/h:outputText>
		&lt;/f:facet>
		&lt;h:outputText value="#{info.ownerName}">&lt;/h:outputText>
	&lt;/t:column>
	&lt;t:column headercolspan="2" headerstyleClass="headStyleClass" width="33%">
		&lt;f:facet name="header">
			&lt;htm:table width="100%">
				&lt;htm:tr>
					&lt;htm:td align="center" colspan="2" styleClass="reportTblR">&lt;h:outputText value="security">&lt;/h:outputText>&lt;/htm:td>
				&lt;/htm:tr>
				&lt;htm:tr>
					&lt;htm:td align="center" width="50%" styleClass="jobTblRT">&lt;h:outputText value="batamp">&lt;/h:outputText>&lt;/htm:td>
					&lt;htm:td align="center" width="50%" styleClass="jobTblRT">&lt;h:outputText value="invalidscan">&lt;/h:outputText>&lt;/htm:td>
				&lt;/htm:tr>
			&lt;/htm:table>
		&lt;/f:facet>
		&lt;h:outputText value="#{info.batteryTampering}">&lt;/h:outputText>
	&lt;/t:column>
	&lt;t:column width="33%">
		&lt;f:facet name="header">&lt;/f:facet>
		&lt;h:outputText value="#{info.invalidConnect}">&lt;/h:outputText>
	&lt;/t:column>
&lt;/t:dataTable>
</pre