﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-首页技术区</title><link>http://www.blogjava.net/</link><description>专注于Java技术</description><language>zh-cn</language><lastBuildDate>Sat, 04 Jul 2009 06:28:46 GMT</lastBuildDate><pubDate>Sat, 04 Jul 2009 06:28:46 GMT</pubDate><ttl>60</ttl><item><title>Web 开发与设计师速查手册大全（下）</title><link>http://www.blogjava.net/Unmi/archive/2009/07/04/285457.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 04 Jul 2009 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/07/04/285457.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/285457.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/07/04/285457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/285457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/285457.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在Web 开发与设计师速查手册大全（上）中，介绍的主要是 Web 开发者常用速查手册，本文将着重介绍 Web 前端设计者常用速查手册。其中涉及颜色速查表以及 Adobe 众多设计工具的速查手册。<br><br>Color Codes<br>RGB Hex Colour Chart<br>这张 RGB 16进制颜色速查表刚好可以打印在整张 A4 纸上，包含216种所谓的 Web 安全色。下载（PNG | PDF ）&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/07/04/285457.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/285457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-07-04 14:09 <a href="http://www.blogjava.net/Unmi/archive/2009/07/04/285457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>赌气做了一个JSF Table Component，分享源代码！</title><link>http://www.blogjava.net/lifesting/archive/2009/07/04/285453.html</link><dc:creator>Always BaNg.</dc:creator><author>Always BaNg.</author><pubDate>Sat, 04 Jul 2009 05:22:00 GMT</pubDate><guid>http://www.blogjava.net/lifesting/archive/2009/07/04/285453.html</guid><wfw:comment>http://www.blogjava.net/lifesting/comments/285453.html</wfw:comment><comments>http://www.blogjava.net/lifesting/archive/2009/07/04/285453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lifesting/comments/commentRss/285453.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lifesting/services/trackbacks/285453.html</trackback:ping><description><![CDATA[周二，我兴匆匆去老刘那演示RichFaces的Table控件，可老刘说了，RichFaces太复杂，不适合我们，且还有不少的bug(这些我无法考证:)。于是他拿出一个使用了一堆JSP+Servelet+Bean写的一个表格，跟说我，我很怀疑JSF能做出这个东西来，你使用纯JSF做一个一样的表格组件我就相信JSF能够用在开发平台(注:我是此Eclipse开发平台的兼职架构师)上。我心里琢磨，既然你是用JSP/Servlet搞出来的，而JSF是基于Servlet的技术，怎么可能实现不了呢？ 三天做出来！我一直相信，技术在于使用技术的人，而不是技术本身。<br />
<br />
<span style="font-size: 18pt;">
<span style="color: red;"><a href="http://gefexample.googlecode.com/files/jsftry.tar.gz">下载</a></span> </span><br />
<br />
先看图吧：<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/lifesting/09/table.jpg" border="1" height="761" width="625" /><br />
<br />
再看看对应的JSF标记<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/1999/xhtml"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:h</span><span style="color: #0000ff;">="http://java.sun.com/jsf/html"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:f</span><span style="color: #0000ff;">="http://java.sun.com/jsf/core"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:ui</span><span style="color: #0000ff;">="http://java.sun.com/jsf/facelets"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:cby</span><span style="color: #0000ff;">="http:/www.lifesting.com/jsf"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ui:composition&nbsp;</span><span style="color: #ff0000;">template</span><span style="color: #0000ff;">="/tpl.xhtml"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ui:define&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="pageTitle"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">表格展示</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ui:define</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ui:define&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="pageHeader"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">国家</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ui:define</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ui:define&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="body"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h:form</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h:panelGrid&nbsp;</span><span style="color: #ff0000;">columns</span><span style="color: #0000ff;">="1"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h:message&nbsp;</span><span style="color: #ff0000;">for</span><span style="color: #0000ff;">="mytable"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">h:panelGrid</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:rns&nbsp;</span><span style="color: #ff0000;">text</span><span style="color: #0000ff;">="页面设置"</span><span style="color: #ff0000;">&nbsp;tableFor</span><span style="color: #0000ff;">="mytable"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:filter&nbsp;</span><span style="color: #ff0000;">text</span><span style="color: #0000ff;">="过滤策略"</span><span style="color: #ff0000;">&nbsp;tableFor</span><span style="color: #0000ff;">="mytable"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:delete&nbsp;</span><span style="color: #ff0000;">tableFor</span><span style="color: #0000ff;">="mytable"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:table&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="mytable"</span><span style="color: #ff0000;">&nbsp;var</span><span style="color: #0000ff;">="rec"</span><span style="color: #ff0000;">&nbsp;checkable</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;idField</span><span style="color: #0000ff;">="code"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bean</span><span style="color: #0000ff;">="Country"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:column&nbsp;</span><span style="color: #ff0000;">field</span><span style="color: #0000ff;">="name"</span><span style="color: #ff0000;">&nbsp;sortable</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;filterable</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="名称"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h:outputText&nbsp;</span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">="#{rec.wrapped.name}"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">h:outputText</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">cby:column</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:column&nbsp;</span><span style="color: #ff0000;">field</span><span style="color: #0000ff;">="region"</span><span style="color: #ff0000;">&nbsp;sortable</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;filterable</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="区域"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h:outputText&nbsp;</span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">="#{rec.wrapped.region}"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">h:outputText</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">cby:column</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:column&nbsp;</span><span style="color: #ff0000;">field</span><span style="color: #0000ff;">="surfaceArea"</span><span style="color: #ff0000;">&nbsp;sortable</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;">&nbsp;filterable</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #0000ff;">="150"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="表面积"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h:outputText&nbsp;</span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">="#{rec.wrapped.surfaceArea}"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">h:outputText</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">cby:column</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:column&nbsp;</span><span style="color: #ff0000;">field</span><span style="color: #0000ff;">="population"</span><span style="color: #ff0000;">&nbsp;sortable</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;filterable</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="人口"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h:outputText&nbsp;</span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">="#{rec.wrapped.population}"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">h:outputText</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">cby:column</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">cby:ds&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">cby:table</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">h:form</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ui:define</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ui:composition</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></div>
<br />
因为开发平台最终是以BO为核心，所以此表格组件是通过设置 bean，然后再通过Hibernate来获取数据的。<br />
<br />
这个组件除采用JSF +Facelet之外，没有其它页面技术，代码简洁，无抽象，且里面还有注释，初学者可以参考一下。<br />
<br />
主要功能：<br />
1 设置column的filterable属性(true/false)来过滤数据(目前实现为左匹配，比如输入Sa，就是Sa开头的)<br />
2 分页导航<br />
3 设置column的sortable属性(true/false)用来对某列进行 正/反 排序<br />
4 改变页记录大小，默认为20条/页<br />
5 设置table的checkable属性为true，表格将会多一行用来选择。<br />
6 可以批量删除被checked的记录。<br />
<br />
这个组件只考虑了功能，并没有考虑到美观，如果你觉得可以用，改改它的html属性设置。<br />
<br />
安装：<br />
<br />
1 附件是一个Maven项目，必须安装有maven。<br />
2 安装MySQL数据库，启动MySQL，运行 <br />
create database world<br />
3 找到项目下面的world.sql，假设其路径为/a/b/c/world.sql，使用MySQL的source命令<br />
use world<br />
source /a/b/c/world.sql<br />
4修改项目下的hibernate.cfg.xml中MySQL数据库用户名/密码。<br />
5 执行mvn jetty:run 启动<br />
6 浏览器输入 http://localhost:8080/jsftry/ 就可以看到效果了<br />
<br />
关于调试：<br />
1 下载一个Eclipse JEE版本<br />
2&nbsp; 在项目目录下执行 mvn eclipse:clean eclipse:eclipse -DdownloadSources=true -Dwtpversion=1.5<br />
<br />
虽然工作中不用Java很久了，但拿起来玩玩还是觉得Java真的很有生产力。JSF，Hibernate，Maven，Eclipse一个比一个牛比。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/lifesting/aggbug/285453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lifesting/" target="_blank">Always BaNg.</a> 2009-07-04 13:22 <a href="http://www.blogjava.net/lifesting/archive/2009/07/04/285453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 2.x 精简实例系列教程（待发表，敬请关注）</title><link>http://www.blogjava.net/rongxh7/archive/2009/07/04/285449.html</link><dc:creator>心梦帆影</dc:creator><author>心梦帆影</author><pubDate>Sat, 04 Jul 2009 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/rongxh7/archive/2009/07/04/285449.html</guid><wfw:comment>http://www.blogjava.net/rongxh7/comments/285449.html</wfw:comment><comments>http://www.blogjava.net/rongxh7/archive/2009/07/04/285449.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/rongxh7/comments/commentRss/285449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rongxh7/services/trackbacks/285449.html</trackback:ping><description><![CDATA[<p>教程别名：基于Struts 2.x 的SimpleWeb小项目开发教程</p> <p>Struts版本：Struts 2.1.6</p> <p>两种实现形式：</p> <blockquote> <p>a. XML配置形式，兼容Struts 2.0，JSP文件置根目录下</p> <p>b. Annotation注解形式，JSP文件置WEB-INF下面</p></blockquote> <p>标签库两种形式：a. Struts 2 tag&nbsp;&nbsp;&nbsp; b. JSTL+EL</p> <p>实例项目名：SimpleWeb</p> <p>（1）环境搭建与HelloSimple测试</p> <p>（2）用户登录实例讲解Action（Action&amp;Result）</p> <p>（3）用JavaBean写用户业务逻辑（POJO，JDBC，Junit）</p> <p>（4）用户注册模块与重用户登录模块（exception，Session的设置）</p> <p>（5）用户的CRUD操作（Method）</p> <p>（6）新闻和栏目相关业务逻辑的编写</p> <p>（7）新闻与栏目操作的Action与整合eWebEditor</p> <p>（8）整合Jquery技术</p> <p>（9）重写用户注册模块与用户登录模块（融入Jquery技术）</p> <p>…… 其他内容，如果大家需要，请跟我说一下，我会考虑加入我的教程中。</p> <p>&nbsp;</p> <p>原则：不要因技术而学技术，而要根据需要而学：Struts 2.x有些东西是不需要用或者很少用到的，在本教程中就没有涉及到。</p> <p>本教程适用：</p> <p>1、想学习Struts 2.x的朋友</p> <p>2、没时间学习Hibernate,Spring等框架，而只想用Struts 2.x + JDBC做开发的朋友</p> <p>&nbsp;</p> <p>实例正在开发中，教程正在编写中，敬请关注！</p><img src ="http://www.blogjava.net/rongxh7/aggbug/285449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rongxh7/" target="_blank">心梦帆影</a> 2009-07-04 11:55 <a href="http://www.blogjava.net/rongxh7/archive/2009/07/04/285449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Radius服务中使用MS-CHAP-V1协议进行通讯</title><link>http://www.blogjava.net/ruchal/archive/2009/07/04/radius_mschapv1.html</link><dc:creator>青果</dc:creator><author>青果</author><pubDate>Sat, 04 Jul 2009 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/ruchal/archive/2009/07/04/radius_mschapv1.html</guid><wfw:comment>http://www.blogjava.net/ruchal/comments/285445.html</wfw:comment><comments>http://www.blogjava.net/ruchal/archive/2009/07/04/radius_mschapv1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ruchal/comments/commentRss/285445.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ruchal/services/trackbacks/285445.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近一个项目“无线网接入动态密码验证” ，使用思科的ACS作为Radius客户端，自己实现Radius服务端进行密码验证，步骤如下：（握手过程Radius已经封装，无须管它）<br>1，    客户端：发送报文，接受返回报文并解析，然后进行相应的处理（客户端由思科的ACS处理）；<br>2，    服务端：接受报文，解析报文并验证（密码之类），然后响应相应的结果（需要java实现）&nbsp;&nbsp;<a href='http://www.blogjava.net/ruchal/archive/2009/07/04/radius_mschapv1.html'>阅读全文</a><img src ="http://www.blogjava.net/ruchal/aggbug/285445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ruchal/" target="_blank">青果</a> 2009-07-04 11:42 <a href="http://www.blogjava.net/ruchal/archive/2009/07/04/radius_mschapv1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache HTTPServer与JBoss或是Tomcat的整合与请求分发 </title><link>http://www.blogjava.net/bitmap/archive/2009/07/03/285244.html</link><dc:creator>bitmap</dc:creator><author>bitmap</author><pubDate>Fri, 03 Jul 2009 14:06:00 GMT</pubDate><guid>http://www.blogjava.net/bitmap/archive/2009/07/03/285244.html</guid><description><![CDATA[如果需要一台服务器来做转发请求的话，用 apache的HttpServer再好不过了。<br />
<br />
假如一个客户请求服务器A,A并不直接处理客户端的请求，而是把请求转发到<br />
服务器B。<br />
<br />
来看一个具体怎么操作吧。<br />
<br />
首先先下载一个apache-httpserver,这里用的是apache_2.2.3-win32-x86-no_ssl.msi,你可以在此<br />
<a href="http://apache.mirror.phpchina.com/httpd/">http://apache.mirror.phpchina.com/httpd/</a>&nbsp; <a href="http://www.bt285.cn/">http://www.bt285.cn</a> 　进行下载。或此看此文最后的附件也可。<br />
<br />
安装就不用说了吧，安装完毕后。有时候启动服务会失败，我的第一次就失败了。端口被占用。<br />
这时我们：<br />
<br />
<p>首先用netstat -ano 看是得到占用80端口的进程的PID，然后打开任务管理器，选择-&gt;查看-&gt;选择列，勾上PID（进程标识符），结束这个进程，再启动Apache就成功了.<br />
可以在浏览器输入:http://localhost 出现　'it works' 说明就ok了.<br />
<br />
服务启动成功后去下载:mod_jk-apache-2.2.3.so,本文附件中会提供。<br />
<br />
<br />
1.进入apache的安装目录。找到modules把下载好的mod_jk-apache-2.2.3.so复制进去。<br />
2.在conf目录建立一个workers.properties文件，内容如下:</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"># Define</span> <span style="font-weight: bold; color: #800000">1</span> <span style="font-weight: bold; color: #000000">real</span> <span style="color: #000000">worker using ajp13<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />worker.list</span><span style="color: #808080">=</span><span style="color: #000000">admin<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />#</span> <span style="color: #0000ff">Set</span> <span style="color: #000000">properties</span> <span style="color: #0000ff">for</span> <span style="color: #000000">admin (ajp13)<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />worker.admin.type</span><span style="color: #808080">=</span><span style="color: #000000">ajp13<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />worker.admin.host</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">127.0</span><span style="color: #000000">.</span><span style="font-weight: bold; color: #800000">0.1</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />worker.admin.port</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">8009</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />worker.admin.lbfactor</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />#worker.admin.cachesize</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">10</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /># worker.admin.cache_timeout</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">600</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />worker.admin.socket_keepalive</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /># worker.admin.recycle_timeout</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">300</span></div>
<p><br />
其中host就是你要转发到的服务器IP,port是端口号。这里是用本机测试，所以只改端口号就行了。<br />
<br />
3.打开conf目录下的httpd.conf文件，找到#LoadModule ssl_module modules/mod_ssl.so <a href="http://www.5a520.cn/">http://www.5a520.cn</a> 这一行。在<br />
这一行下面加上:</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"># 加载 mod_jk 模块<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />LoadModule jk_module modules</span><span style="color: #808080">/</span><span style="color: #000000">mod_jk</span><span style="color: #808080">-</span><span style="color: #000000">apache</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">2.2</span><span style="color: #000000">.</span><span style="font-weight: bold; color: #800000">3</span><span style="color: #000000">.so<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /># 指定 mod_jk 模块所需的配置文件 workers.properties 的位置<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />JkWorkersFile conf</span><span style="color: #808080">/</span><span style="color: #000000">workers.properties<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /># 指定 mod_jk 模块的日志文件位置<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />JkLogFile logs</span><span style="color: #808080">/</span><span style="color: #000000">mod_jk.</span><span style="color: #ff00ff">log</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /># 指定 mod_jk 模块的日志级别<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />JkLogLevel info<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /># 指定 mod_jk 模块的日志格式<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />JkLogStampFormat "</span><span style="color: #ff0000">[</span><span style="color: #ff0000">%a %b %d %H:%M:%S %Y</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /># 发送所有请求上下文的请求给 admin<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img style="display: none" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top" />JkMount</span> <span><span style="color: #008080">/*</span> <span style="color: #008080">admin</span></span>
<p><span>最后一个的admin就是第二步中的worker.list</span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Service</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="jboss.web"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????</span><span style="color: #008000"><!----></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />??<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Connector</span> <span style="color: #ff0000">port</span><span style="color: #0000ff">="8080"</span> <span style="color: #ff0000">address</span><span style="color: #0000ff">="${jboss.bind.address}"</span><span style="color: #ff0000">????<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????????? maxThreads</span><span style="color: #0000ff">="250"</span> <span style="color: #ff0000">maxHttpHeaderSize</span><span style="color: #0000ff">="8192"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????????? emptySessionPath</span><span style="color: #0000ff">="true"</span> <span style="color: #ff0000">protocol</span><span style="color: #0000ff">="HTTP/1.1"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????????? enableLookups</span><span style="color: #0000ff">="false"</span> <span style="color: #ff0000">redirectPort</span><span style="color: #0000ff">="8443"</span> <span style="color: #ff0000">acceptCount</span><span style="color: #0000ff">="100"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????????? connectionTimeout</span><span style="color: #0000ff">="20000"</span> <span style="color: #ff0000">disableUploadTimeout</span><span style="color: #0000ff">="true"</span> <span style="color: #0000ff">/&gt;</span><span style="color: #000000">??<br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????</span><span style="color: #008000"><!----></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????</span><span style="color: #008000"><!----></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????</span><span style="color: #008000"><!----></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Connector</span> <span style="color: #ff0000">port</span><span style="color: #0000ff">="8009"</span> <span style="color: #ff0000">address</span><span style="color: #0000ff">="${jboss.bind.address}"</span> <span style="color: #ff0000">protocol</span><span style="color: #0000ff">="AJP/1.3"</span><span style="color: #ff0000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????????? emptySessionPath</span><span style="color: #0000ff">="true"</span> <span style="color: #ff0000">enableLookups</span><span style="color: #0000ff">="false"</span> <span style="color: #ff0000">redirectPort</span><span style="color: #0000ff">="8443"</span> <span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />??????</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Engine</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">="jboss.web"</span> <span style="color: #ff0000">defaultHost</span><span style="color: #0000ff">="localhost"</span> <span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />?????????</span><span style="color: #008000"><!----></span></div>
<p>tomcat:<br />
tomcat/conf/server.xml:</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /> <span style="color: #008000"><!----></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />????</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Connector</span> <span style="color: #ff0000">port</span><span style="color: #0000ff">="8009"</span> <span style="color: #ff0000">protocol</span><span style="color: #0000ff">="AJP/1.3"</span> <span style="color: #ff0000">redirectPort</span><span style="color: #0000ff">="8443"</span> <span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span></div>
<p><br />
其中关于AJP的配置是一样的，这里可以更改你需要的端口，当然上面的apache也需要同时更改。<br />
<br />
最后打浏览器测试一下吧:<br />
http://localhost<br />
<br />
显示的其实就是<a href="http://127.0.0.1:8009/">http://127.0.0.1:8009</a> ，如果你JBoss/Tomat下部署有测试工程。看一下吧。已经出现了。<br />
<br />
好的，操作成功了。说明已经转发成功。</p>
<p><a title="相关附件下载" href="http://cid-39cce615c2e5d86b.skydrive.live.com/self.aspx/Public/opensource/apache-httpserver%e9%85%8d%e7%bd%ae.rar">相关附件下载</a></p>
<br />
<br />
好了apache的配置都搞定了，重启一下ok.<br />
<br />
我们再来看一下jboss的配置:<br />
<br />
找到:<br />
jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer\server.xml<br />
<br />
看看最上面的一段配置就行了:</div>
 <img src ="http://www.blogjava.net/bitmap/aggbug/285244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bitmap/" target="_blank">bitmap</a> 2009-07-03 22:06 <a href="http://www.blogjava.net/bitmap/archive/2009/07/03/285244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在分布式事务中实现基于Oracle PLSQL UL LOCK的悲观离线锁</title><link>http://www.blogjava.net/ldd600/archive/2009/07/03/285400.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 03 Jul 2009 11:24:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/07/03/285400.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/285400.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/07/03/285400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/285400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/285400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 悲观离线锁可以控制多事务的并发，特别是当多事务是在多个jvm上执行时，我们需要利用外部锁，如DB锁。本文利用Oracle PLSQL UL锁，在JTA分布式事务中实现锁管理器，并封装成隐含锁提供给应用项目组使用。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2009/07/03/285400.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/285400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-07-03 19:24 <a href="http://www.blogjava.net/ldd600/archive/2009/07/03/285400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SVN快速入门3&amp;mdash;&amp;mdash;整合eclipse（1）</title><link>http://www.blogjava.net/gdhqs/archive/2009/07/03/285399.html</link><dc:creator>小人物</dc:creator><author>小人物</author><pubDate>Fri, 03 Jul 2009 11:06:00 GMT</pubDate><guid>http://www.blogjava.net/gdhqs/archive/2009/07/03/285399.html</guid><wfw:comment>http://www.blogjava.net/gdhqs/comments/285399.html</wfw:comment><comments>http://www.blogjava.net/gdhqs/archive/2009/07/03/285399.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gdhqs/comments/commentRss/285399.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gdhqs/services/trackbacks/285399.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 相信大部分javaee的开发人员是用eclipse作为开发工具的，前两篇文章写的是仅有SVN的基本操作，现在这篇文章将会写SVN如何整合eclipse的。让大家真正感受到SVN的好处。</p> <p>&nbsp;&nbsp;&nbsp; 我的eclipse版本是Version: 3.4.2。本身没有内置对sub的支持，需要去下载svn插件。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb.png" width="450" height="164"></a> </p> <p>&nbsp;&nbsp;&nbsp; 在<a title="http://subclipse.tigris.org/" href="http://subclipse.tigris.org">http://subclipse.tigris.org</a>找到符合自己eclipse版本的插件的下载地址。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_1.png" width="617" height="275"></a> </p> <p>&nbsp;&nbsp;&nbsp; 我下载的是<a href="http://subclipse.tigris.org/files/documents/906/45156/site-1.4.8.zip">site-1.4.8.zip</a>。</p> <p>&nbsp;&nbsp;&nbsp; 然后在eclipse下安装SVN插件。（SVN下载页面也有安装的图解教程。不过我这个版本的和它的稍有不同。）</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_2.png" width="556" height="218"></a> </p> <p>点击ADD Site。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_3.png" width="641" height="299"></a> </p> <p>点击 Archive。选择下载的压缩包。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_10.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_4.png" width="447" height="462"></a> </p> <p>还有另外一种更方便的安装方法。svnclipse网页上给出了Eclipse update site URL: <a href="http://subclipse.tigris.org/update_1.6.x">http://subclipse.tigris.org/update_1.6.x</a></p> <p>我们直接在这里把link输入，eclipse就会帮我们下载和安装。（由于我已经安装了，所以它提示已存在完全一样的插件）</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_34.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_16.png" width="673" height="381"></a> </p> <p>安装成功后，重启eclipse。查看是否有Preferences-&gt;Team-&gt;SVN，有则说明安装成功。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_12.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_5.png" width="182" height="223"></a> </p> <p>新建一个项目。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_14.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_6.png" width="357" height="377"></a> </p> <p>新建一个类，写上一些代码。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_16.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_7.png" width="587" height="269"></a> </p> <p>在eclipse中打开SVN视图</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_18.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_8.png" width="323" height="381"></a> </p> <p>在左边新建一个资源库位置</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_20.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_9.png" width="612" height="384"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_24.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_11.png" width="471" height="368"></a> </p> <p>&nbsp;</p> <p>回到JAVAEE视图,将项目import到服务器服务器上:鼠标右键点击项目-&gt;Team-&gt;Share Project</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_26.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_12.png" width="442" height="551"></a> </p> <p>选择SVN</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_28.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_13.png" width="386" height="279"></a> </p> <p>使用刚才定位的仓库</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_30.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_14.png" width="465" height="338"></a> </p> <p>在SVN视图里可以看到,项目已经导入</p> <p><a href="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_32.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/gdhqs/WindowsLiveWriter/SVN3eclipse_E7B8/image_thumb_15.png" width="481" height="348"></a>&nbsp;</p> <p>先写到这里，下一篇将写一些基本操作。</p><img src ="http://www.blogjava.net/gdhqs/aggbug/285399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdhqs/" target="_blank">小人物</a> 2009-07-03 19:06 <a href="http://www.blogjava.net/gdhqs/archive/2009/07/03/285399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让你的程序24小时都在赚钱！</title><link>http://www.blogjava.net/yellowzf/archive/2009/07/03/285378.html</link><dc:creator>yellowzf</dc:creator><author>yellowzf</author><pubDate>Fri, 03 Jul 2009 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/yellowzf/archive/2009/07/03/285378.html</guid><wfw:comment>http://www.blogjava.net/yellowzf/comments/285378.html</wfw:comment><comments>http://www.blogjava.net/yellowzf/archive/2009/07/03/285378.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/yellowzf/comments/commentRss/285378.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yellowzf/services/trackbacks/285378.html</trackback:ping><description><![CDATA[<p>程序员是一群聪明又勤奋的人，应该过上富足的生活。<br />
然而在中国，大部份程序员的命运是这样的：<br />
22岁大学毕业，加入了入不敷出的小IT公司，从事低级的编码工作，付出超额劳动，赚取微薄的工资。。。<br />
26岁，为之奋斗了几年的公司发展起来了，但由于程序员不擅人事斗争被利益阶级排挤在外，几年的辛苦劳作却给他人做了嫁衣。。。<br />
29岁，几年动荡的职场生涯，没留下太多的财富积累，又要面对取妻、购房、生子带来的生活压力。。。<br />
32岁，而立之年，回首青春，一声叹息。。<br />
如何能摆脱这道&#8220;程序员魔咒&#8221;呢？下面还是来讲个小故事，道理就在其中了。</p>
<p><br />
1、留意每一个改变命运的机会，多做尝试。<br />
小张是web工程师，一年前出于兴趣,自己做了个音乐/娱乐类网站，经过了建站、推广之后，网站每日流量5000IP，于是就开始挂上google广告，一个月下来竟有4000多元的收入。<br />
小张复制了这一模式又创建了技术类、游戏类、生活类等5个网站，广告也增加了啊里妈妈、百度联盟等等，这一部份月收入已达3万多。而26岁的小张目前的工资是8000元。</p>
<p>2、从共赢中获得生存<br />
frank是个java程序员，经验丰富，开发中常被同事问到&#8220;java类包找不到怎么办&#8221;，于是他搜集了常用的java类包，做成网站<a style="color: #0000ff" href="http://www.jar114.com"><u>jar114.com </u></a>供大家查找。<br />
由于来这个网的都是java程序员，精明的书类销售商看到了商机，于是提出广告销售分成的合作方式,据frank说目前已经在赢利了。</p>
<p>3、从新技术应用中寻找机会<br />
王亮是个google技术狂热的追随者，google手机推出后，王亮立即购买了一只，用业余时间写了一个小应用程序放到<a style="color: #0000ff" href="http://www.android.com/market/"><u>google market</u></a>上卖，2个月过去后，他的这款售价为0.99美元的软件，售出了2万份。王亮常说他现在连睡觉都在挣钱。</p>
<p><br />
以上故事并非商业奇才的传奇成功史，而是平凡程序员的真实故事，成功谈不上，但已经足够温饱了。</p>
<p>各位程序员朋友看完，应该有所启发，欢迎交流。</p>
<img src ="http://www.blogjava.net/yellowzf/aggbug/285378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yellowzf/" target="_blank">yellowzf</a> 2009-07-03 17:00 <a href="http://www.blogjava.net/yellowzf/archive/2009/07/03/285378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谁不知道构架？</title><link>http://www.blogjava.net/leeguannan/archive/2009/07/03/285372.html</link><dc:creator>阿南</dc:creator><author>阿南</author><pubDate>Fri, 03 Jul 2009 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/leeguannan/archive/2009/07/03/285372.html</guid><wfw:comment>http://www.blogjava.net/leeguannan/comments/285372.html</wfw:comment><comments>http://www.blogjava.net/leeguannan/archive/2009/07/03/285372.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/leeguannan/comments/commentRss/285372.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leeguannan/services/trackbacks/285372.html</trackback:ping><description><![CDATA[<p>&#160;&#160;&#160; 作为一个技术人员，谁不知道构架？</p>  <p>&#160;&#160;&#160; 前一段时间公司找开发人员谈心，有位领导问一位开发人员，大致对话如下：</p>  <p>&#160;&#160;&#160; A：“你了解咱们现在产品的构架吗？能不能谈谈你对构架的看法？”</p>  <p>&#160;&#160;&#160; B：“… …”</p>  <p>&#160;&#160;&#160; A：“说说看吧~”</p>  <p>&#160;&#160;&#160; B：“我不懂构架！构架是什么？咱们现在的产品还有构架呢？”</p>  <p>&#160;&#160;&#160; 作为一个有3年工作经验，2家公司经历的VC程序员来说，我觉得，这几年的积累是白做了！这样的思想永远都只能停留在写程序上~</p>  <p>&#160;&#160;&#160; 一个产品没有构件，就如同一个人没有灵魂一样！他不是没有，只是你没有去思考，没有去发现他而已！</p>  <p>&#160;&#160;&#160; 我记得袁洪刚说过，“一个伟大的产品背后一定有一个伟大构架师！”，我坚信这一点~产品好坏一方面决定于对现实问题的解决程度，另一方面是构架的好坏！</p>  <p>&#160;&#160;&#160; 几年前，中国的软件公司里面很少出现构架师/架构师这样的角色，这几年开始有改观了，越来越多的人开始认识到很多错误的问题，其实从一开始就是错的。很多事情并没有谋定而后动。一味的追求简单，到最后变成了下线很简单了！</p>  <p>&#160;&#160; 说自己不知道构架的开发人员有两种，新手和没有思想的新手，拼命的同时我们也应该停下脚步想想，抬起头看看天空。别总把经验的缺失都归结于时间的长短，更应该想想自己是否真的积累过。</p><img src ="http://www.blogjava.net/leeguannan/aggbug/285372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leeguannan/" target="_blank">阿南</a> 2009-07-03 16:33 <a href="http://www.blogjava.net/leeguannan/archive/2009/07/03/285372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决ajax post请求乱码 ie、Firefox测试通过</title><link>http://www.blogjava.net/cool2009/archive/2009/07/03/285299.html</link><dc:creator>龙华城</dc:creator><author>龙华城</author><pubDate>Fri, 03 Jul 2009 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/cool2009/archive/2009/07/03/285299.html</guid><wfw:comment>http://www.blogjava.net/cool2009/comments/285299.html</wfw:comment><comments>http://www.blogjava.net/cool2009/archive/2009/07/03/285299.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/cool2009/comments/commentRss/285299.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cool2009/services/trackbacks/285299.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我用的是jquery，其它的也是一样的。&nbsp;&nbsp;<a href='http://www.blogjava.net/cool2009/archive/2009/07/03/285299.html'>阅读全文</a><img src ="http://www.blogjava.net/cool2009/aggbug/285299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cool2009/" target="_blank">龙华城</a> 2009-07-03 10:44 <a href="http://www.blogjava.net/cool2009/archive/2009/07/03/285299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>漫谈Java加密技术（一） </title><link>http://www.blogjava.net/bitmap/archive/2009/07/02/285243.html</link><dc:creator>bitmap</dc:creator><author>bitmap</author><pubDate>Thu, 02 Jul 2009 13:10:00 GMT</pubDate><guid>http://www.blogjava.net/bitmap/archive/2009/07/02/285243.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关键字: java 加密基础, base64, md5, mac, sha, 单向加密&nbsp;&nbsp;&nbsp; 加密解密，曾经是我一个毕业设计的重要组件。在工作了多年以后回想当时那个加密、解密算法，实在是太单纯了。 &nbsp;&nbsp;&nbsp; 言归正传，这里我们主要描述Java已经实现的一些加密解密算法，最后介绍数字证书。 &nbsp;&nbsp;&nbsp; 如...&nbsp;&nbsp;<a href='http://www.blogjava.net/bitmap/archive/2009/07/02/285243.html'>阅读全文</a><img src ="http://www.blogjava.net/bitmap/aggbug/285243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bitmap/" target="_blank">bitmap</a> 2009-07-02 21:10 <a href="http://www.blogjava.net/bitmap/archive/2009/07/02/285243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[图解教程]Eclipse不可不知的用法之四：配置服务器与项目的新建运行</title><link>http://www.blogjava.net/rongxh7/archive/2009/07/02/285241.html</link><dc:creator>心梦帆影</dc:creator><author>心梦帆影</author><pubDate>Thu, 02 Jul 2009 12:53:00 GMT</pubDate><guid>http://www.blogjava.net/rongxh7/archive/2009/07/02/285241.html</guid><wfw:comment>http://www.blogjava.net/rongxh7/comments/285241.html</wfw:comment><comments>http://www.blogjava.net/rongxh7/archive/2009/07/02/285241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rongxh7/comments/commentRss/285241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rongxh7/services/trackbacks/285241.html</trackback:ping><description><![CDATA[<p>这么有失水准的文章，真不好意思再写了。但毕竟还是有些初学者不熟悉，截些图来看一下配置服务器的过程吧。</p> <p><font color="#0000ff"><strong>(7) 配置Tomcat服务器</strong></font></p> <p>这里以配置Tomcat 6.0为例。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb.png" width="598" height="323"></a> </p> <p>选择Server下面的Runtime Environments：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_1.png" width="563" height="444"></a> </p> <p>点击右边的&#8220;Add&#8221;按钮，进&#8220;New Server Runtime Environment&#8221;对话框，选择我们要配置的Tomcat版本，这里选用了Tomcat v6.0，注意要与你下载的版本一致。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_2.png" width="528" height="535"></a> </p> <p>Next后进入下图:</p> <p></p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_8.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_3.png" width="487" height="346"></a>&nbsp;</p> <p>在Tomcat installation directory右边的Browse按钮，点击它，进入本地磁盘目录，选择你的Tomcat安装目录，如下：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_10.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_4.png" width="507" height="373"></a> </p> <p>确定后，回到刚才那个对话框，点击JRE右边的Installed JREs按钮，进入下图的界面：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_12.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_5.png" width="601" height="357"></a> </p> <p>如果这里已经配置了JDK,则直接选择即行，如果没有配置的话，就点右边的&#8220;Add&#8221;,添加一个标准的JRE</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_14.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_6.png" width="535" height="378"></a> </p> <p>Next,下图，点右边的Directgry浏览本地文件系统，找到JDK的安装目录。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_16.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_7.png" width="456" height="409"></a> </p> <p></p> <p></p> <p>好，确定 &#8211; finish，下一步，完成。如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_18.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_8.png" width="585" height="324"></a> </p> <p>&nbsp;</p> <p><font color="#0000ff"><strong>(8) 项目的新建、添加jar包、运行。</strong></font></p> <p>一般我们用这个工具来做Web项目，就建一个动态Web工程吧：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_20.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_9.png" width="602" height="293"></a> </p> <p>如果上图的选项中没有Dynamic Web Project的话，可在最下面Other那里找到，又或者通过定制菜单将这一项显示在这里，关于如何定制菜单，请看我的<a href="http://www.blogjava.net/rongxh7/archive/2009/06/29/284564.html">[图解教程]Eclipse不可不知的用法之三：定制视图与New菜单项</a>。</p> <p>进入下图界面，在Project name中输入工程名，这里起名为&#8220;HelloWorld&#8221;，在Target runtime中选择刚才我们配置的Tomcat 6.0服务器。如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_22.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_10.png" width="613" height="456"></a>&nbsp;</p> <p>行了，完成。</p> <p>关于如何把外部的jar包引进我们的项目中来，这个其实很简单，复制那些jar文件，在下图的lib目录下右键粘贴即行。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_24.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_11.png" width="490" height="415"></a> </p> <p>关于如何运行Web项目，Eclipse for JavaEE与MyEclipse的做法不同。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_26.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_12.png" width="604" height="461"></a> </p> <p>进入下图，找到我们配置的服务器：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_28.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Eclipse_12013/image_thumb_13.png" width="491" height="578"></a> </p> <p>Next &#8211; &gt; finish即行。</p> <p>&nbsp;</p> <p>好了，Eclipse系列图解教程，到这里，暂告一段落，都是说一些很基础的东西，有什么不足之处，请大家多多包涵！</p> <img src ="http://www.blogjava.net/rongxh7/aggbug/285241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rongxh7/" target="_blank">心梦帆影</a> 2009-07-02 20:53 <a href="http://www.blogjava.net/rongxh7/archive/2009/07/02/285241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java网络编程从入门到精通（24）：实现HTTP断点续传下载工具（附源代码）</title><link>http://www.blogjava.net/nokiaguy/archive/2009/07/02/285225.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Thu, 02 Jul 2009 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2009/07/02/285225.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/285225.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2009/07/02/285225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/285225.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/285225.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range，另两个是响应消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用来断定Web服务器是否支持断点继传功能。在这里为了演示如何实现断点继传功能，假设Web服务器支持这个功能；因此，我们只使用Range和Content-Range来完成一个断点继传工具的开发。&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2009/07/02/285225.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/285225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2009-07-02 18:11 <a href="http://www.blogjava.net/nokiaguy/archive/2009/07/02/285225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring工作原理探秘 </title><link>http://www.blogjava.net/Werther/archive/2009/07/02/285219.html</link><dc:creator>Werther</dc:creator><author>Werther</author><pubDate>Thu, 02 Jul 2009 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/Werther/archive/2009/07/02/285219.html</guid><wfw:comment>http://www.blogjava.net/Werther/comments/285219.html</wfw:comment><comments>http://www.blogjava.net/Werther/archive/2009/07/02/285219.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Werther/comments/commentRss/285219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Werther/services/trackbacks/285219.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 　Spring的哲学是在不影响Java对象的设计的情况下将Java对象加入到框架中。 我们下面来看看Spring的工作原理，看看Spring是如何做到不影响Java对象的。 &nbsp;&nbsp;<a href='http://www.blogjava.net/Werther/archive/2009/07/02/285219.html'>阅读全文</a><img src ="http://www.blogjava.net/Werther/aggbug/285219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Werther/" target="_blank">Werther</a> 2009-07-02 17:34 <a href="http://www.blogjava.net/Werther/archive/2009/07/02/285219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图解--自定义报表菜单实现五大步</title><link>http://www.blogjava.net/fannie/archive/2009/07/02/285212.html</link><dc:creator>anniezheng</dc:creator><author>anniezheng</author><pubDate>Thu, 02 Jul 2009 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/fannie/archive/2009/07/02/285212.html</guid><wfw:comment>http://www.blogjava.net/fannie/comments/285212.html</wfw:comment><comments>http://www.blogjava.net/fannie/archive/2009/07/02/285212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fannie/comments/commentRss/285212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fannie/services/trackbacks/285212.html</trackback:ping><description><![CDATA[&nbsp;
<p>1.<span style="font-family: 宋体">写一个</span>Java<span style="font-family: 宋体">文件如</span>SaveReportAction<span style="font-family: 宋体">所示，其包名为</span>com.demo<span style="font-family: 宋体">，编译这个</span>Java<span style="font-family: 宋体">文件为类文件，保存到设计器的</span>classpath<span style="font-family: 宋体">下面。代码如下：<br />
<br />
</p>
<p><span style="font-family: Arial">package com.demo;</span></p>
<p><span style="font-family: Arial">import java.awt.event.ActionEvent;<br />
import java.awt.event.KeyEvent;</span></p>
<p><span style="font-family: Arial">import javax.swing.KeyStroke;</span></p>
<p><span style="font-family: Arial">import com.fr.base.BaseUtils;<br />
import com.fr.base.Inter;<br />
import com.fr.cell.JWorkBook;<br />
import com.fr.cell.ReportPane;<br />
import com.fr.design.actions.UpdateAction;<br />
import com.fr.design.gui.core.DesignUtils;<br />
import com.fr.design.mainframe.DesignerContext;<br />
import com.fr.design.mainframe.JReportInternalFrame;<br />
import com.fr.report.Report;</span></p>
<p><span style="font-family: Arial">public class SaveReportAction extends UpdateAction {<br />
&nbsp;public SaveReportAction() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setName(Inter.getLocText("M-Save"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setMnemonic('S');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/save.png"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;<br />
&nbsp;public void actionPerformed(ActionEvent arg0) {<br />
&nbsp;&nbsp;JReportInternalFrame reportFrame = DesignUtils.getReportFrame(DesignerContext.getDesignerFrame());<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;if(reportFrame == null) {<br />
&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;ReportPane reportPane = reportFrame.getReportPane();<br />
&nbsp;&nbsp;Report report;<br />
&nbsp;&nbsp;if(reportPane instanceof JWorkBook) {<br />
&nbsp;&nbsp;&nbsp;report = ((JWorkBook)reportPane).getWorkBook();<br />
&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;report = reportPane.getReport();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;// 可以通过TemplateExporter导出该Report<br />
&nbsp;&nbsp;System.out.println("Report.getRowCount is " + report.getRowCount());<br />
&nbsp;&nbsp;<br />
&nbsp;}</span></p>
<p><span style="font-family: Arial">}<br />
</span></p>
<p><br />
<br />
</span></p>
<p>2.<span style="font-family: 宋体">打开设计器，主菜单</span> | <span style="font-family: 宋体">窗口</span> | <span style="font-family: 宋体">选项，打开对话框导出菜单配置文件<br />
<img border="0" alt="" src="http://www.finereport.com/forumimages/94.png " /><br />
<br />
</span></p>
<p>3.<span style="font-family: 宋体">修改</span>menu.xml</p>
<p><img border="0" alt="" src="http://www.finereport.com/forumimages/95.png " width="460" height="459" /><br />
<br />
4.<span style="font-family: 宋体">再次打开设计器，主菜单</span> | <span style="font-family: 宋体">窗口</span> | <span style="font-family: 宋体">选项，打开对话框，指定菜单配置文件的目录为</span>D:"menu.xml</p>
<p><img border="0" alt="" src="http://www.finereport.com/forumimages/96.png " width="460" height="459" /><br />
<br />
5.<span style="font-family: 宋体">重启设计器，可以看到</span>File<span style="font-family: 宋体">菜单下多了一个</span>&#8221;<span style="font-family: 宋体">保存</span>&#8221;<span style="font-family: 宋体">按钮</span></p>
<br />
<img border="0" alt="" src="http://www.finereport.com/forumimages/97.png " /> 
<img src ="http://www.blogjava.net/fannie/aggbug/285212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fannie/" target="_blank">anniezheng</a> 2009-07-02 17:00 <a href="http://www.blogjava.net/fannie/archive/2009/07/02/285212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[图解教程]Axis2与Eclipse整合开发Web Service之二：WSDL逆向生成服务端</title><link>http://www.blogjava.net/rongxh7/archive/2009/07/02/285193.html</link><dc:creator>心梦帆影</dc:creator><author>心梦帆影</author><pubDate>Thu, 02 Jul 2009 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/rongxh7/archive/2009/07/02/285193.html</guid><wfw:comment>http://www.blogjava.net/rongxh7/comments/285193.html</wfw:comment><comments>http://www.blogjava.net/rongxh7/archive/2009/07/02/285193.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/rongxh7/comments/commentRss/285193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rongxh7/services/trackbacks/285193.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一般开发Web Service，是选写服务端，再根据生成的WSDL文件生成客户端。看过一本SOA的书中说，如果实现防止不同语言一些特定的数据类型的不兼容性，推荐先定义WSDL接口，包括一输入输出参数、返回值及相关的数据类型等，再通过WSDL来生成服务器端和客户端，这样的好处是：服务端不用关心客户端怎么调用，客户端也不用关系服务端如何实现。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于Eclipse中Axis2的配置方法，请看我的<a href="http://www.blogjava.net/rongxh7/archive/2009/05/21/271982.html">[图解教程] Axis2与Eclipse整合开发Web Service之一：简单的计算服务例子</a>，下面来新建一个WSDL文件，如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb.png" width="590" height="595"></a> </p> <p>改个名字为&#8220;manager.wsdl&#8221;，如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_1.png" width="546" height="465"></a> </p> <p>下一步，定义命名空间和协议等信息，默认即行。如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_2.png" width="504" height="429"></a> </p> <p>finish后，会在主工作区出现如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_12.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_5.png" width="612" height="195"></a> </p> <p>这是manager.wsdl的图形化形式，点击&#8220;Source&#8221;会可查看到源代码：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_14.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_6.png" width="608" height="271"></a> </p> <p>这是默认生成的wsdl，我们要根据我们的项目需要，修改上面的图，首先对方法名进行修改，如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_18.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_8.png" width="472" height="170"></a> </p> <p>可见，修改之后，右边的input和output也跟着修改了，这两个就是定义plus的输入和输出。</p> <p>点击input参数&#8220;plus&#8221;右边的提示箭头，进入下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_20.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_9.png" width="432" height="197"></a> </p> <p>就在这里定义输入参数和和参数类型等信息，因为我们plus(float x, float y)方法中有两个参数x和y，故我们将上图改成两个参数的序列：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_30.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_14.png" width="416" height="229"></a> </p> <p>变成下图，对比一下方法plus(float x, float y)，下图也不会太难理解吧！</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_32.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_15.png" width="465" height="223"></a> </p> <p>我们返回manager.wsdl视图，选择output参数右边的箭头，进入下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_34.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_16.png" width="451" height="168"></a> </p> <p>我们在这里设置float plus(float x, float y)方法的返回值及其类型，因其返回值只有一个，我们只须把上面的out的类型改成我们方法中用的float，改后，如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_42.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_20.png" width="530" height="203"></a> </p> <p>有没有注意到上图左上角有个<a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_44.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_21.png" width="37" height="32"></a> 图标，点击它，进入下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_48.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_23.png" width="654" height="456"></a> </p> <p>我们可以在这里对输入输出的参数及其他数据类型进行修改，如果在上面的操作过程中，不小心产生了多余的标签的话，也可以在这里去除。</p> <p>好了，我们再回到manager.wsdl，在源代码视图里右键选&#8220;Validate&#8221;，对xml文档进行检验，如果有错误的，就根据需要修改。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_50.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_24.png" width="318" height="216"></a> </p> <p>好了，图形化编写的wsdl文档完成了，顺便说一下，方法是可以定义多个的，如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_52.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_25.png" width="437" height="177"></a> </p> <p>为简单起见，我们就先以刚才做定义的那个方法为例，看看，如何根据wsdl文件，自动生成Web Service的服务器端。</p> <p>&nbsp;</p> <p>我们New一个Web Service，如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_54.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_26.png" width="523" height="497"></a> </p> <p>记得在Web Service type中选择&#8220;Top down Java Bean Web Service&#8221;，如下图：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_56.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_27.png" width="545" height="185"></a></p> <p>然后，在Service definition中找到刚才写的那个manager.wsdl文件。</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_58.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_28.png" width="570" height="455"></a>&nbsp; </p> <p>回到Web Service对话框，将服务类型的滑块调到&#8220;Develop service&#8221;处，</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_60.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_29.png" width="584" height="398"></a> </p> <p>接下来，就next &#8211;&gt; next &#8211;-&gt; finish就行。它会自动生成Web Service服务端的接口和类，在类中，可找到我们定义的方法：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_62.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_30.png" width="578" height="174"></a> </p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p>我们只要修改方法plus的方法体，以实现我们要实现的功能即行。如下：</p> <p><a href="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_64.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/rongxh7/WindowsLiveWriter/Axis2EclipseWebServiceWSDL_C28D/image_thumb_31.png" width="579" height="188"></a> </p> <p>这是通过WSDL反向生成Web Service服务端的最简单一个例子，可能看不到有什么好处，没有像<a href="http://www.blogjava.net/rongxh7/archive/2009/05/21/271982.html">[图解教程] Axis2与Eclipse整合开发Web Service之一：简单的计算服务例子</a>那样的简便快捷，但如果是一些特有的数据类型，如List，Set，这些，我们有在WSDL图形化设计中找到相应的替代类型，先定义WSDL再生成服务端接口，这样做，不仅Java开发客户端是没有问题的，用C#开发客户端也能成功没有出错！</p> <p>但如果先开发服务器端的话，如果用到一些Java特有的数据类型，如List，Set，如果用其他语言生成的客户端，就可能出问题。同理，用C#开发服务端，如果用到像DataSet这样的返回类型的话，那如果用Java或者其他语言去开发客户端，也可能会出现问题的。</p> <p>如果统一先写WSDL，再根据WSDL生成服务端和客户端，应该是一种很不错的做法，Eclipse在这方面的图形化支持给带给我们事半功倍的效果，这样做，也比较符合SOA的做法。</p> <img src ="http://www.blogjava.net/rongxh7/aggbug/285193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rongxh7/" target="_blank">心梦帆影</a> 2009-07-02 15:47 <a href="http://www.blogjava.net/rongxh7/archive/2009/07/02/285193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[翻译]创建一个弹出通知部件</title><link>http://www.blogjava.net/djsl6071/archive/2009/07/02/285187.html</link><dc:creator>Matthew Chen</dc:creator><author>Matthew Chen</author><pubDate>Thu, 02 Jul 2009 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/djsl6071/archive/2009/07/02/285187.html</guid><wfw:comment>http://www.blogjava.net/djsl6071/comments/285187.html</wfw:comment><comments>http://www.blogjava.net/djsl6071/archive/2009/07/02/285187.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/djsl6071/comments/commentRss/285187.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/djsl6071/services/trackbacks/285187.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在3.4的SWT中Shells支持alpha值设置，所以我们将以此来实现更美观的"呈现"和"消失"，所有我们所需要做的就是在一个线程中循环增加/减少shell的alpha通道值来实现shell的淡入和淡出消失。我们必须在Display线程上来做这些操作，为此提供了一个runnable让Display对象以给定的时间间隔运行。&nbsp;&nbsp;<a href='http://www.blogjava.net/djsl6071/archive/2009/07/02/285187.html'>阅读全文</a><img src ="http://www.blogjava.net/djsl6071/aggbug/285187.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/djsl6071/" target="_blank">Matthew Chen</a> 2009-07-02 15:14 <a href="http://www.blogjava.net/djsl6071/archive/2009/07/02/285187.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对SwingX 做了一些国际化翻译</title><link>http://www.blogjava.net/gml520/archive/2009/07/02/285174.html</link><dc:creator>日月雨林@gmail.com</dc:creator><author>日月雨林@gmail.com</author><pubDate>Thu, 02 Jul 2009 06:44:00 GMT</pubDate><guid>http://www.blogjava.net/gml520/archive/2009/07/02/285174.html</guid><wfw:comment>http://www.blogjava.net/gml520/comments/285174.html</wfw:comment><comments>http://www.blogjava.net/gml520/archive/2009/07/02/285174.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/gml520/comments/commentRss/285174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gml520/services/trackbacks/285174.html</trackback:ping><description><![CDATA[<p>今天用到了一些SwingX 的类库，但是显示的时候都是英文的，感觉挺别扭的，于是就对SwingX做了一些国际化！</p>
<p>下载了源代码，然后找到对应的Properties 文件，发现其实SwingX已经有很多个国家的语言版本了，就是少了中国版的，唉！谁叫中国的程序员使用Swing的少呢？ 呵呵！ </p>
<p>用NetBeans打开 项目文件，找到properties文件，为每个原始的Properties文件添加一个 zh_CN的locale
。然后就是翻译了。这里不得不赞美一下NetBeans 对properties
文件的编辑功能相当的好用，可以直接写中文，而不必转换为Unicode。NetBeans 默认已经帮你完成了。</p>
<p>这是我第一次翻译，因为能力有限，所以翻译难免会有一点小毛病，有什么翻译问题请留言，或者发邮件告诉我，让我好改正。<img src="http://gml520.javaeye.com/images/smiles/icon_wink.gif" alt="" /></p>
<p><a href="/Files/gml520/SwingX.rar"><br />
</a></p>
<p><a href="/Files/gml520/SwingX.rar">点这里下载<br />
</a></p>
<p><a href="/Files/gml520/SwingX.rar"><br />
</a></p>
<img src ="http://www.blogjava.net/gml520/aggbug/285174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gml520/" target="_blank">日月雨林@gmail.com</a> 2009-07-02 14:44 <a href="http://www.blogjava.net/gml520/archive/2009/07/02/285174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3下无状态会话Bean发布为WebService</title><link>http://www.blogjava.net/leeguannan/archive/2009/07/02/285163.html</link><dc:creator>阿南</dc:creator><author>阿南</author><pubDate>Thu, 02 Jul 2009 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/leeguannan/archive/2009/07/02/285163.html</guid><wfw:comment>http://www.blogjava.net/leeguannan/comments/285163.html</wfw:comment><comments>http://www.blogjava.net/leeguannan/archive/2009/07/02/285163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leeguannan/comments/commentRss/285163.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leeguannan/services/trackbacks/285163.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 无状态会话Bean发布为WebService是非常有意义的，因为如果我们将每一个EJB模块按照SOA的思想做成一个一个独立的服务模块（这里不讨论SCA，我认为Apache的SCA框架还不够强大，文档还不够全面），同样的代码在JavaEE体系之内的应用程序可以直接使用EJB3直接访问，JavaEE体系之外的应用程序可以直接使用WebService访问，这一点是非常有意义的。</p>
<p>&nbsp;&nbsp;&nbsp; 下面要考虑的就是如何只写一份代码，让它能做两样事情。</p>
<p>&nbsp;&nbsp;&nbsp; 网上有大量的使用EJB3发布WebService的教程，但是这些教程都是一个人写的，基本上没有太大的参考价值。最重要的是，他写的元注释都是写在实现类上的，接口上没有做任何描述。这种做法有两个问题，第一如果你的会话Bean使用了EM，那么麻烦了，JAXB在做绑定的时候不认识接口；第二WSDL文件的描述实际上应该是基于接口的描述，应该和实现类没有太大的关系。</p>
<p>&nbsp;&nbsp;&nbsp; 看看网上流行的代码：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">@WebService(name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">PurchaseArrival</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;serviceName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">PurchaseArrivalService</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />@SOAPBinding(style&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SOAPBinding.Style.RPC)&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img id="Codehighlighter1_185_186_Open_Image" onclick="this.style.display='none'; Codehighlighter1_185_186_Open_Text.style.display='none'; Codehighlighter1_185_186_Closed_Image.style.display='inline'; Codehighlighter1_185_186_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_185_186_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_185_186_Closed_Text.style.display='none'; Codehighlighter1_185_186_Open_Image.style.display='inline'; Codehighlighter1_185_186_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;PurchaseArrivalImpl&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;IPurchaseArrival&nbsp;</span><span id="Codehighlighter1_185_186_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_185_186_Open_Text"><span style="color: #000000">{</span></div>
<p></span>&nbsp;</p>
<p>注意，基于RPC绑定模式下List，Set一类的接口都是不可传输的，这点会很麻烦，要用必须用实现类。</p>
<p>看看我的代码：</p>
<p>接口：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">@WebService(name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">ILogRemoteService</span><span style="color: #000000">"</span><span style="color: #000000">,targetNamespace&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">http://www.glnpu.com/dmp/xml</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />@SOAPBinding(style&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SOAPBinding.Style.DOCUMENT)&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img id="Codehighlighter1_176_177_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_177_Open_Text.style.display='none'; Codehighlighter1_176_177_Closed_Image.style.display='inline'; Codehighlighter1_176_177_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_176_177_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_176_177_Closed_Text.style.display='none'; Codehighlighter1_176_177_Open_Image.style.display='inline'; Codehighlighter1_176_177_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;&nbsp;ILogRemoteService&nbsp;</span><span id="Codehighlighter1_176_177_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_176_177_Open_Text"><span style="color: #000000">{</span></div>
<p></span>&nbsp;</p>
<p>实现类：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">@Stateless&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />@Remote(ILogRemoteService.</span><span style="color: #0000ff">class</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />@WebService(endpointInterface&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">com.glnpu.dmp.server.service.base.log.ILogRemoteService</span><span style="color: #000000">"</span><span style="color: #000000">,serviceName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">LogRemoteService</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img id="Codehighlighter1_250_251_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_251_Open_Text.style.display='none'; Codehighlighter1_250_251_Closed_Image.style.display='inline'; Codehighlighter1_250_251_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_250_251_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_250_251_Closed_Text.style.display='none'; Codehighlighter1_250_251_Open_Image.style.display='inline'; Codehighlighter1_250_251_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;LogRemoteService&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;BaseService&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;ILogRemoteService&nbsp;</span><span id="Codehighlighter1_250_251_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_250_251_Open_Text"><span style="color: #000000">{</span></div>
<p></span>&nbsp;</p>
<p>这个WebService是针对接口发布出去，而且使用的DOCUMENT样式，可以直接使用List、Set的接口。</p>
<p>这个WebService生成的WSDL文件很有意思：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">definitions&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="LogRemoteService"</span><span style="color: #ff0000">&nbsp;targetNamespace</span><span style="color: #0000ff">="http://impl.log.base.service.server.dmp.glnpu.com/"</span><span style="color: #ff0000">&nbsp;xmlns</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/"</span><span style="color: #ff0000">&nbsp;xmlns:ns1</span><span style="color: #0000ff">="http://www.glnpu.com/dmp/xml"</span><span style="color: #ff0000">&nbsp;xmlns:soap</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/"</span><span style="color: #ff0000">&nbsp;xmlns:tns</span><span style="color: #0000ff">="http://impl.log.base.service.server.dmp.glnpu.com/"</span><span style="color: #ff0000">&nbsp;xmlns:xsd</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">import&nbsp;</span><span style="color: #ff0000">location</span><span style="color: #0000ff">="http://127.0.0.1:8080/LogRemoteServiceService/LogRemoteService?wsdl&amp;resource=ILogRemoteService_PortType25057.wsdl"</span><span style="color: #ff0000">&nbsp;namespace</span><span style="color: #0000ff">="http://www.glnpu.com/dmp/xml"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">service&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="LogRemoteService"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">port&nbsp;</span><span style="color: #ff0000">binding</span><span style="color: #0000ff">="ns1:ILogRemoteServiceBinding"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="LogRemoteServicePort"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:address&nbsp;</span><span style="color: #ff0000">location</span><span style="color: #0000ff">="http://127.0.0.1:8080/LogRemoteServiceService/LogRemoteService"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">port</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">service</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">definitions</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>&nbsp;</p>
<p>里面有import来指引到真正的WSDL文件。这样很容易将会话Bean变成WS~一样的代码两样的功能，超值！</p>
<img src ="http://www.blogjava.net/leeguannan/aggbug/285163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leeguannan/" target="_blank">阿南</a> 2009-07-02 13:54 <a href="http://www.blogjava.net/leeguannan/archive/2009/07/02/285163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>流程控制台的规划进度和视频展示（开源）</title><link>http://www.blogjava.net/kayzhan/archive/2009/07/02/285137.html</link><dc:creator>卡宴</dc:creator><author>卡宴</author><pubDate>Thu, 02 Jul 2009 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/kayzhan/archive/2009/07/02/285137.html</guid><wfw:comment>http://www.blogjava.net/kayzhan/comments/285137.html</wfw:comment><comments>http://www.blogjava.net/kayzhan/archive/2009/07/02/285137.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/kayzhan/comments/commentRss/285137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kayzhan/services/trackbacks/285137.html</trackback:ping><description><![CDATA[&nbsp;
最近一直在整流程控制台，发现还是有不少成就感的，尤其昨天又实现了动画回放流程。这可是忽悠领导的最佳手段啊，我先给大家看一下我们控制台的规划和进度（提供源码下载地址<br />
<a title="http://jbpmside.googlecode.com/svn/trunk" href="http://jbpmside.googlecode.com/svn/trunk"></a>）：<br />
<br />
-------------------------------------------------近期<br />
* 细化task的生命周期，重新整理task操作<br />
* 流程实例历史<br />
&nbsp; * 表格方式查看流程历史<br />
&nbsp; <br />
<br />
------------------------------------------------- 远景<br />
* 流程仿真<br />
* 修改流程图<br />
* 细粒度权限控制<br />
* 回退<br />
* 会签<br />
* 委派<br />
* swimlane<br />
* BI<br />
* BAM<br />
* 仪表盘<br />
<br />
<br />
-------------------------------------------------ChangeLog<br />
<br />
* 2009-07-01<br />
* [DONE] 实现动画方式回放流程<br />
<br />
* [DONE] 实现deployment的suspend, resume（CR1显示已暂停定义列表时出现问题，trunk下已修正，等待GA）<br />
* [DONE] 实现processInstance的suspend, resume, end（CR1和trunk里，都没有暴露suspend和resume方法）<br />
* [DONE] 实现personalTasks, groupTasks, take task, cancel task<br />
<br />
* 2009-06-29<br />
<br />
* [DONE] 登陆页面，登录名和密码为1/1<br />
* [DONE] 添加start和signal,complete task时，添加变量<br />
* [DONE] 整合web流程设计器，可以直接发布流程定义<br />
* [DONE] 国际化<br />
<br />
* 2009-06-01 and before<br />
<br />
* [DONE] 发布xml格式的流程定义<br />
* [DONE] 流程定义管理（list, start, delete）<br />
* [DONE] 显示流程图（只在Process Instance详细信息中可显示）<br />
* [DONE] 流程实例管理（list, signal, view, delete）<br />
* [DONE] 任务管理（list, complete）<br />
* [DONE] 追踪流程图（显示Process Instance的当前位置）<br />
* [DONE] 多流向选择<br />
* [DONE] 用户权限（user, group, membership的CRUD功能）<br />
* [DONE] 报表（most active process）<br />
<br />
呵呵，现在实现的功能毕竟还是有限，我们的功能规划在一定程度上可能有些局限，希望大家能给多提提建议，认为控制台里还可以加些什么功能。这可是开源的啊，大家为了自己也要多提出建议来，O(&#8745;_&#8745;)O哈哈~<br />
<br />
下面是我们控制台一些功能的视频演示，包括流程设计和发布，动画回放流程等。<br />
大家可以看看视频：<a title="http://www.family168.com/bbs/dispbbs.asp?boardid=6&amp;Id=473 " href="http://www.family168.com/bbs/dispbbs.asp?boardid=6&amp;Id=473 ">http://www.family168.com/bbs/dispbbs.asp?boardid=6&amp;Id=473</a><br />
截图请看:<a title="http://www.family168.com/bbs/dispbbs.asp?boardid=6&amp;Id=463" href="http://www.family168.com/bbs/dispbbs.asp?boardid=6&amp;Id=463">http://www.family168.com/bbs/dispbbs.asp?boardid=6&amp;Id=463</a><br />
svn的下载地址：<a title="http://jbpmside.googlecode.com/svn/trunk" href="http://jbpmside.googlecode.com/svn/trunk">http://jbpmside.googlecode.com/svn/trunk</a><br />
<br />
<img src ="http://www.blogjava.net/kayzhan/aggbug/285137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kayzhan/" target="_blank">卡宴</a> 2009-07-02 12:34 <a href="http://www.blogjava.net/kayzhan/archive/2009/07/02/285137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于 JavaBean 规范你还是应该知道的二三事</title><link>http://www.blogjava.net/Unmi/archive/2009/07/01/285020.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Wed, 01 Jul 2009 14:19:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2009/07/01/285020.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/285020.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2009/07/01/285020.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/285020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/285020.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 作为 Java  程序员，对于 JavaBean 也许你会说再熟悉不过了，它贯穿在系统的多层中，不同的叫法有 PO、VO、DTO、POJO、DO(Domain Object)。然而它无外乎就是一个 Class 类，带上些属性和它们的 setter/getter 方法，set/get 后面那一个字母大写。虽然我们现在很少把 JavaBean 与那个古老的 2.0 的 EJB 搞混，但为什么明明用 IDE 为属性生成的 getter/setter 方法，应用一运行，还是报找不到某个 bean 属性的 setter 或 getter 方法呢？<br><br>要知道，在 Sun 的网站上那个关于 JavaBean 规范的 PDF 文档可是有足足实实的 114 页啊。难免有些规则有点古怪，至使知名的 IDE 都难以应对，所以我们还是有必要了解其中二三，来规范我们的 JavaBean 和解释一些情形。&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2009/07/01/285020.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/285020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2009-07-01 22:19 <a href="http://www.blogjava.net/Unmi/archive/2009/07/01/285020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在eclipse里开发web项目</title><link>http://www.blogjava.net/ynstudio/archive/2009/07/01/284960.html</link><dc:creator>一农</dc:creator><author>一农</author><pubDate>Wed, 01 Jul 2009 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/ynstudio/archive/2009/07/01/284960.html</guid><wfw:comment>http://www.blogjava.net/ynstudio/comments/284960.html</wfw:comment><comments>http://www.blogjava.net/ynstudio/archive/2009/07/01/284960.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ynstudio/comments/commentRss/284960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ynstudio/services/trackbacks/284960.html</trackback:ping><description><![CDATA[我排版的能力太差，请海涵！最新内容可以参看<a href="http://code.google.com/p/simplejee/wiki/dynamic_web_project">http://code.google.com/p/simplejee/wiki/dynamic_web_project</a><br/>
<h1>如何创建dynamic web project项目</h1><p>本文的演示是从本地文件创建dynamic web project，从svn检出的同时创建dynamic web project于此类似。<br>我们推荐使用解压版的tomcat6.x版本，来作为服务器。可以到http://tomcat.apache.org 下载。 <br>在创建动态web项目之前，我们先创建一个Server用于在eclipse里运行和调试web项目。 </p><h1>创建一个Server</h1><p>创建Server是为了方便在eclipse里启动和调试dynamic web project，<br>我们以创建一个使用tomcat的server为例，基本按照截图按部就班就可以了: </p><ul><li>新建一个Server项目 </li><span><br><img src="http://lh5.ggpht.com/_6RG1t42SeWU/SkowkHr-kAI/AAAAAAAAAEo/md-v-BZMz8c/1.jpg"> 

<br><img src="http://lh6.ggpht.com/_6RG1t42SeWU/SkowpxEEnZI/AAAAAAAAAEs/4h7sYJohK0c/2.jpg"> 
</span><li>我们选择tomcat6,并关联到我们的tomcat目录 </li><span><br><img src="http://lh4.ggpht.com/_6RG1t42SeWU/Sko1kdFYqOI/AAAAAAAAAFI/I72oVVBIWwM/3.jpg"> 
<br><img src="http://lh3.ggpht.com/_6RG1t42SeWU/Sko1kt9iYFI/AAAAAAAAAFM/dogr-V7wX1c/4.jpg"> 
</span><li> 在下图中，如果你的项目里有dynamic web project的项目，<br>那么会自动列在左侧的框里，你可以选择其中一个或几个到右边的框里，在finish后，<br>eclipse会把这些项目注册给该Server，即在该Server的server.xml里添加类似<pre><span class="error">&lt;context docBase="simplejee\WebContent" path="/simplejee"&gt;</span></pre><pre><span class="error">&lt;/context&gt;</span></pre>的内容。如果你熟悉tomcat对这个一定很熟悉。 </li><span><br><img src="http://lh6.ggpht.com/_6RG1t42SeWU/Sko1lKGXw3I/AAAAAAAAAFQ/qXitzcanApk/5.jpg"> 
<br><img src="http://lh5.ggpht.com/_6RG1t42SeWU/Skr_0o4AyXI/AAAAAAAAAGA/IwcJD8zFTRg/6.jpg"> 
</span><li>完成后你会看到如下的一个窗口，如果看不到的话，可按照第二幅图的样子打开相应的view。 </li><span><br><img src="http://lh3.ggpht.com/_6RG1t42SeWU/Sko1mQ1vPOI/AAAAAAAAAFc/fAaIYExZLTk/8.jpg"> 
<br><img src="http://lh6.ggpht.com/_6RG1t42SeWU/Sko1l7wwCzI/AAAAAAAAAFY/6qVbEDlrT0k/7.jpg"> 
</span><li>这样一个server就配好了。点击上图中绿色的运行按钮，就可以使用Server下的配置运行你的tomcat了。 </li><span><br><img src="http://lh3.ggpht.com/_6RG1t42SeWU/SksGgBfX3tI/AAAAAAAAAJ0/6wNc9w4hZV8/18.jpg"> 
</span></ul><h1>创建dynamic web project</h1><p>eclipse本身的dynamic web project类似MyEclipse?的web project，<br>如果在MyEclipse里创建dynamic web project的话，<br>需要在创建新项目时，选中Show All Wizards: </p><ul><li>和创建其他项目类似，还是从file-&gt;new-&gt;other-&gt;web-&gt;dynamic web project， </li><span><br><img src="http://lh4.ggpht.com/_6RG1t42SeWU/Skr_4mDnzYI/AAAAAAAAAGQ/7RawerL6mEE/11.jpg"> 

</span><li>填写项目的相关信息。在该界面里有个project contents，默认是在你的workspace下，<br>你也可以随便选择其他位置，或则是已经存在的文件。<br>我自己是习惯把项目文件放在其他单独的文件夹里。 </li><span><br><img src="http://lh3.ggpht.com/_6RG1t42SeWU/Skr_5FY86YI/AAAAAAAAAGU/SWyhny136nM/12.jpg"> 
<span><br>注意这里的内容，如果你是用的MyEclipse的web project的话，content directory的值默认为WebRoot，<br>你需要修改为WebContent，<br>因为我们的脚本都是按照WebContent来写的。 
</span><br><img src="http://lh5.ggpht.com/_6RG1t42SeWU/Skr_6XGNMJI/AAAAAAAAAGY/LSpZfHz9-LM/13.jpg"> <br>
<span>点击确定后，可能会弹出下面这个警告框，是问你是否切换到和该项目类型关联的JavaEE视图上。
<br>所谓视图简单的讲就是view的组合。 
</span><br><img src="http://lh6.ggpht.com/_6RG1t42SeWU/Skr_6zSUL3I/AAAAAAAAAGc/9iephz0-HII/14.jpg"> 
</span><li>项目创建这样就完成了，在你左侧项目栏里会出现如下内容<br>
（具体显示方式和你是在什么view里查看是相关的，图示是Navigator下的显示形式） </li><span><br><img src="http://lh3.ggpht.com/_6RG1t42SeWU/Skr_71uFijI/AAAAAAAAAGg/lvMOYu7boZg/15.jpg"> 
</span><li>你还可以根据你的习惯修改一下项目的相关配置，<br>
我自己习惯将java文件编译到WebContent?\WEB-INF\classes下，<br>
这个你可以点击Source的tab，修改default output folder的内容。
<br>另外注意下图中的Apache tomcat v6.0这是引入的Server对应的一堆jar包，<br>
而Web App libraries是指你项目下的WebContent?/lib下的所有的jar包，
<br>当你在WebContent?/lib下添加新jar的时候，就不需要自己Add Jars了。 </li><span><br><img src="http://lh6.ggpht.com/_6RG1t42SeWU/Skr_9lGJtaI/AAAAAAAAAGk/hyFdmM9HhI0/16.jpg" width="600"> 

</span><li>在项目根目录上右键，然后run as，选run on server，就可以在eclipse里运行该项目了。 </li><span><br><img src="http://lh3.ggpht.com/_6RG1t42SeWU/Skr_-oYyjNI/AAAAAAAAAGo/fQbvQ24MgY4/17.jpg" width="600"> 
</span></ul><h1>断点调试</h1><p>在创建了Server和Dynamic Web Project后，调试java代码，只要在运行项目时选择Debug As就可以了，<br>
另外还有种方式是Remote Java Project。 <br><img src="http://lh3.ggpht.com/_6RG1t42SeWU/SksQ0rshltI/AAAAAAAAAJ8/RX43z6tRK28/21.jpg"> <br><img src="http://lh4.ggpht.com/_6RG1t42SeWU/SksQfEVIYfI/AAAAAAAAAJ4/1DPFbJzgNXs/19.jpg" width="600"> </p><span>这种方式需要再给tomcat写个脚本 
</span>debug.bat <pre class="prettyprint"><span class="pln">SET CATALINA_OPTS</span><span class="pun">=-</span><span class="pln">server </span><span class="pun">-</span><span class="typ">Xdebug</span><span class="pln"> </span><span class="pun">-</span><span class="typ">Xnoagent</span><span class="pln"> </span><span class="pun">-</span><span class="typ">Djava</span><span class="pun">.</span><span class="pln">compiler</span><span class="pun">=</span><span class="pln">NONE </span><span class="pun">-</span><span class="typ">Xrunjdwp</span><span class="pun">:</span><span class="pln">transport</span><span class="pun">=</span><span class="pln">dt_socket</span><span class="pun">,</span><span class="pln">server</span><span class="pun">=</span><span class="pln">y</span><span class="pun">,</span><span class="pln">suspend</span><span class="pun">=</span><span class="pln">n</span><span class="pun">,</span><span class="pln">address</span><span class="pun">=</span><span class="lit">5888</span><span class="pln"> <br>call startup</span><span class="pun">.</span><span class="pln">bat</span></pre><h1>小技巧</h1><p>如下，会持续补充中: </p><ul><li>当你的项目比较大又想在eclipse里启动tomcat来运行的话，常常会因为超时而失败，<br>
这时可以双击Servers的view里的某个Server，这时会出现，下图上半部分的内容，可以在Timeouts里将超时时间加长 </li><span><br><img src="http://lh6.ggpht.com/_6RG1t42SeWU/SksR_JfuURI/AAAAAAAAAKA/HRxvr-xn8pY/22.jpg" width="600"> 

</span></ul>
<img src ="http://www.blogjava.net/ynstudio/aggbug/284960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ynstudio/" target="_blank">一农</a> 2009-07-01 16:22 <a href="http://www.blogjava.net/ynstudio/archive/2009/07/01/284960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP实现点击链接后下载文件(相当于右键另存)功能</title><link>http://www.blogjava.net/supercrsky/archive/2009/07/01/284962.html</link><dc:creator>々上善若水々</dc:creator><author>々上善若水々</author><pubDate>Wed, 01 Jul 2009 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/supercrsky/archive/2009/07/01/284962.html</guid><wfw:comment>http://www.blogjava.net/supercrsky/comments/284962.html</wfw:comment><comments>http://www.blogjava.net/supercrsky/archive/2009/07/01/284962.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/supercrsky/comments/commentRss/284962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/supercrsky/services/trackbacks/284962.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_0_113_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_113_Open_Text.style.display='none'; Codehighlighter1_0_113_Closed_Image.style.display='inline'; Codehighlighter1_0_113_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_113_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_0_113_Closed_Text.style.display='none'; Codehighlighter1_0_113_Open_Image.style.display='inline'; Codehighlighter1_0_113_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_113_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_0_113_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;实现文件另存功能<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;text<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件内容<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;fileName<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件名称<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;String&nbsp;renderFile(String&nbsp;text,&nbsp;String&nbsp;fileName)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException<br />
<img id="Codehighlighter1_197_492_Open_Image" onclick="this.style.display='none'; Codehighlighter1_197_492_Open_Text.style.display='none'; Codehighlighter1_197_492_Closed_Image.style.display='inline'; Codehighlighter1_197_492_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_197_492_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_197_492_Closed_Text.style.display='none'; Codehighlighter1_197_492_Open_Image.style.display='inline'; Codehighlighter1_197_492_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_197_492_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_197_492_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.addHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Disposition</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">attachment;&nbsp;filename=</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;fileName);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentType(</span><span style="color: #000000">"</span><span style="color: #000000">application/octet-stream</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setCharacterEncoding(</span><span style="color: #000000">"</span><span style="color: #000000">GB2312</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.getWriter().write(text);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.flushBuffer();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.getWriter().close();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<br />
下载的action:<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_0_31_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_31_Open_Text.style.display='none'; Codehighlighter1_0_31_Closed_Image.style.display='inline'; Codehighlighter1_0_31_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_31_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_0_31_Closed_Text.style.display='none'; Codehighlighter1_0_31_Open_Image.style.display='inline'; Codehighlighter1_0_31_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_31_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_0_31_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;提供下载的方法<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;down()<br />
<img id="Codehighlighter1_56_455_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_455_Open_Text.style.display='none'; Codehighlighter1_56_455_Closed_Image.style.display='inline'; Codehighlighter1_56_455_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_56_455_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_56_455_Closed_Text.style.display='none'; Codehighlighter1_56_455_Open_Image.style.display='inline'; Codehighlighter1_56_455_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_56_455_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_56_455_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;dir&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getFullPath()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/upload/file/</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_114_345_Open_Image" onclick="this.style.display='none'; Codehighlighter1_114_345_Open_Text.style.display='none'; Codehighlighter1_114_345_Closed_Image.style.display='inline'; Codehighlighter1_114_345_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_114_345_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_114_345_Closed_Text.style.display='none'; Codehighlighter1_114_345_Open_Image.style.display='inline'; Codehighlighter1_114_345_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_114_345_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_114_345_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">FileUtils.exists(dir))<br />
<img id="Codehighlighter1_150_183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_150_183_Open_Text.style.display='none'; Codehighlighter1_150_183_Closed_Image.style.display='inline'; Codehighlighter1_150_183_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_150_183_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_150_183_Closed_Text.style.display='none'; Codehighlighter1_150_183_Open_Image.style.display='inline'; Codehighlighter1_150_183_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_150_183_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_150_183_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(dir).mkdirs();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;r&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Random(System.currentTimeMillis());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;randomInt&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;r.nextInt();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.renderFile(</span><span style="color: #000000">"</span><span style="color: #000000">test&nbsp;content:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;randomInt,randomInt&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">.txt</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)<br />
<img id="Codehighlighter1_373_437_Open_Image" onclick="this.style.display='none'; Codehighlighter1_373_437_Open_Text.style.display='none'; Codehighlighter1_373_437_Closed_Image.style.display='inline'; Codehighlighter1_373_437_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_373_437_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_373_437_Closed_Text.style.display='none'; Codehighlighter1_373_437_Open_Image.style.display='inline'; Codehighlighter1_373_437_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_373_437_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_373_437_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.renderText(e.getMessage());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
页面链接调用:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">a&nbsp;</span><span style="color: #ff0000">href</span><span style="color: #0000ff">="${ctx}/va/va!down.do"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">下载</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">a</span><span style="color: #0000ff">&gt;</span></div>
<img src ="http://www.blogjava.net/supercrsky/aggbug/284962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/supercrsky/" target="_blank">々上善若水々</a> 2009-07-01 15:59 <a href="http://www.blogjava.net/supercrsky/archive/2009/07/01/284962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]ExtJS Grid 自定义排序规则</title><link>http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_customsort.html</link><dc:creator>乾为天|天猪</dc:creator><author>乾为天|天猪</author><pubDate>Wed, 01 Jul 2009 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_customsort.html</guid><wfw:comment>http://www.blogjava.net/atian25/comments/284886.html</wfw:comment><comments>http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_customsort.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/atian25/comments/commentRss/284886.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/atian25/services/trackbacks/284886.html</trackback:ping><description><![CDATA[<p>有一些需求如:</p>
<p>1.一个文件管理的Grid,要求排序的时候,文件夹永远在顶部</p>
<p>2.一个显示成功率的Grid,要求成功数+失败数=0的数据,不参与排序,永远在底部</p>
<p>ExtJs本身并没有暴露这个接口,所以我们只能自己重写,如下代码:</p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">&nbsp;1</span>&nbsp;<span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;store&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Ext.data.JsonStore({&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;2</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;root:'data',&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;3</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;fields:[&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;4</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;'name',&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;5</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{name:'sucCount',type:'</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">'},&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;6</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{name:'failCount',type:'</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">'},&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;7</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{name:'sucRate',type:'</span><span style="color: rgb(0, 0, 255);">float</span><span style="color: rgb(0, 0, 0);">'},&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;8</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{name:'isValidateTest',type:'</span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);">'},&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;9</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{name:'statType',type:'</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">'},&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">10</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;'testLogIds','bsc','msc','sgsn'&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">11</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;],&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">12</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;sortInfo:{field:&nbsp;'sucRate',&nbsp;direction:&nbsp;'ASC'},&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">13</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">排序规则&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">14</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;sortData:</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(f,&nbsp;direction){&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">15</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;direction&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;direction&nbsp;</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">&nbsp;'ASC';&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">16</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;dir&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;direction&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;'ASC'&nbsp;</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">&nbsp;:&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">17</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;st&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.fields.get(f).sortType;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">18</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">关键地方,重写排序排序规则&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">19</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;fn&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(r1,&nbsp;r2){&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">20</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">r1.get('isValidateTest')</span><span style="color: rgb(0, 0, 0);">||!</span><span style="color: rgb(0, 0, 0);">r2.get('isValidateTest')){&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">21</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">无效数据永远在下面&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">22</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">r1.get('isValidateTest')&nbsp;</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">&nbsp;dir&nbsp;:&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">dir;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">23</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">{&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">24</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;v1&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;st(r1.data[f]),&nbsp;v2&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;st(r2.data[f]);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">25</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;v1&nbsp;</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;v2&nbsp;</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">&nbsp;:&nbsp;(v1&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">&nbsp;v2&nbsp;</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">&nbsp;:&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">26</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">27</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">28</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.data.sort(direction,&nbsp;fn);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">29</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.snapshot&nbsp;</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.snapshot&nbsp;</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.data){&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">30</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.snapshot.sort(direction,&nbsp;fn);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">31</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">32</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;}&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">33</span>&nbsp;<span style="color: rgb(0, 0, 0);">}); <br />
</span></div>
<img src ="http://www.blogjava.net/atian25/aggbug/284886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/atian25/" target="_blank">乾为天|天猪</a> 2009-07-01 10:20 <a href="http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_customsort.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]ExtJS Grid tooltip的几种实现方式</title><link>http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_tooltip.html</link><dc:creator>乾为天|天猪</dc:creator><author>乾为天|天猪</author><pubDate>Wed, 01 Jul 2009 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_tooltip.html</guid><wfw:comment>http://www.blogjava.net/atian25/comments/284885.html</wfw:comment><comments>http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_tooltip.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/atian25/comments/commentRss/284885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/atian25/services/trackbacks/284885.html</trackback:ping><description><![CDATA[<p><strong><a target="_blank" href="http://atian25.javaeye.com/blog/417361">http://atian25.javaeye.com/blog/417361</a><br />
</strong></p>
<p><strong>1.表头提示</strong>
</p>
<p>在2.2里面是设置<a class="external text" title="http://extjs.com/deploy/dev/docs/?class=Ext.grid.ColumnModel&amp;member=tooltip" rel="nofollow" href="http://extjs.com/deploy/dev/docs/?class=Ext.grid.ColumnModel&amp;member=tooltip">ColumnModel.tooltip</a>
<span class="external text"> ,3.0则是Column.</span>
<span class="Apple-style-span" style="border-collapse: separate; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; white-space: normal; font-family: Simsun; color: rgb(0, 0, 0); font-size: medium;"><span class="Apple-style-span" style="font-size: 13px; font-weight: bold; font-family: Tahoma,Verdana,Arial,Helvetica,sans-serif;"><a style="color: rgb(8, 55, 114); text-decoration: none;" href="http://extjs.com/deploy/ext-3.0-rc2/docs/source/Column.html#cfg-Ext.grid.Column-tooltip" target="_blank">tooltip</a>
</span>
</span>
<span class="external text"> 如下:</span></p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">1</span>&nbsp;<span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;grid&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Ext.grid.GridPanel({&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">2</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;columns:[&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">3</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{header:'名称',dataIndex:'name',tooltip:'对象名称'},&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">4</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{header:'开始时间&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">&nbsp;结束时间&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">br</span><span style="color: rgb(0, 0, 0);">/&gt;</span><span style="color: rgb(0, 0, 0);">成功</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">失败</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">成功率',&nbsp;dataIndex:'sucRate',tooltip:'成功</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">失败</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">成功率'}&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">5</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;]&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">6</span>&nbsp;<span style="color: rgb(0, 0, 0);">}); <br />
</span></div>
<br />
<p><strong>2.单元格提示</strong>
</p>
<p><strong>1)使用Ext.QuickTips</strong>
</p>
<p>在开始的时候就执行Ext.QuickTips.init();</p>
<p>然后对需要提示的单元格,重写renderer函数,添加ext:qtitle , ext:qtip这2个属性即可。</p>
<p>这个在官方的FAQ上有详细描述: <a href="http://extjs.com/learn/Ext_FAQ_Grid#Add_ToolTip_or_Qtip" target="_blank">http://extjs.com/learn/Ext_FAQ_Grid#Add_ToolTip_or_Qtip</a>
</p>
<p>代码:</p>
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">&nbsp;1</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">option&nbsp;1&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;2</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">========&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;3</span>&nbsp;<span style="color: rgb(0, 0, 0);">renderer&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;(data,&nbsp;metadata,&nbsp;record,&nbsp;rowIndex,&nbsp;columnIndex,&nbsp;store)&nbsp;{&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;4</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">build&nbsp;the&nbsp;qtip:&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;5</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;title&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;'Details&nbsp;</span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">&amp;</span><span style="color: rgb(0, 0, 0);">nbsp;'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;value&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;record.get('month')&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;6</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;record.get('year');&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;7</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;tip&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;record.get('sunday_events');&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;8</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;9</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;metadata.attr&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;'ext:qtitle</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;+&nbsp;title&nbsp;+&nbsp;'</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;'&nbsp;ext:qtip</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;+&nbsp;tip&nbsp;+&nbsp;'</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">';&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">10</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">11</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">return&nbsp;the&nbsp;display&nbsp;text:&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">12</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;displayText&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">span&nbsp;style</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">color:&nbsp;#000;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;value&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">span</span><span style="color: rgb(0, 0, 0);">&gt;&lt;</span><span style="color: rgb(0, 0, 0);">br&nbsp;</span><span style="color: rgb(0, 0, 0);">/&gt;</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">13</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;record.get('sunday_events_short');&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">14</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;displayText;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">15</span>&nbsp;<span style="color: rgb(0, 0, 0);">};&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">16</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">17</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">option&nbsp;2&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">18</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">========&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">19</span>&nbsp;<span style="color: rgb(0, 0, 0);">renderer&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;(data,&nbsp;metadata,&nbsp;record,&nbsp;rowIndex,&nbsp;columnIndex,&nbsp;store)&nbsp;{&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">20</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;qtip&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">';&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">21</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(data&nbsp;</span><span style="color: rgb(0, 0, 0);">&gt;=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">){&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">22</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qtip&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;qtip='yeah'/&gt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">23</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">span&nbsp;style</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">color:green;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;qtip&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;data&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">%&lt;/</span><span style="color: rgb(0, 0, 0);">span</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">';&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">24</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(data&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">){&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">25</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qtip&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;qtip='woops'/&gt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">26</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">span&nbsp;style</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">color:red;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;qtip&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;data&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;'</span><span style="color: rgb(0, 0, 0);">%&lt;/</span><span style="color: rgb(0, 0, 0);">span</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">';&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">27</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">28</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;data;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">29</span>&nbsp;<span style="color: rgb(0, 0, 0);">};&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">30</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">31</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">option&nbsp;3&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">32</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">========&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">33</span>&nbsp;<span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;qtipTpl&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Ext.XTemplate(&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">34</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">h3</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">Phones:</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">h3</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">',&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">35</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">tpl&nbsp;</span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">',&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">36</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">div</span><span style="color: rgb(0, 0, 0);">&gt;&lt;</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">{phoneType}:</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">i</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;{phoneNumber}</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">div</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">',&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">37</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">tpl</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">'&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">38</span>&nbsp;<span style="color: rgb(0, 0, 0);">);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">39</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">40</span>&nbsp;<span style="color: rgb(0, 0, 0);">renderer&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;(data,&nbsp;metadata,&nbsp;record,&nbsp;rowIndex,&nbsp;columnIndex,&nbsp;store)&nbsp;{&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">41</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">42</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;get&nbsp;data&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">43</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;data&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;record.data;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">44</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">45</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;convert&nbsp;phones&nbsp;to&nbsp;array&nbsp;(only&nbsp;once)&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">46</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;data.phones&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;Ext.isArray(data.phones)&nbsp;</span><span style="color: rgb(0, 0, 0);">?</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">47</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.phones&nbsp;:&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">48</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getPhones(data.phones);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">49</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">50</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;create&nbsp;tooltip&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">51</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;qtip&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;qtipTpl.apply(data.phones);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">52</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">53</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;metadata.attr&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;'ext:qtitle</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;+&nbsp;title&nbsp;+&nbsp;'</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;'&nbsp;ext:qtip</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">'&nbsp;+&nbsp;tip&nbsp;+&nbsp;'</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">';&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">54</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">55</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">return&nbsp;the&nbsp;display&nbsp;text:&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">56</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">57</span>&nbsp;<span style="color: rgb(0, 0, 0);">}; <br />
</span></div>
<br />
<p><strong>2)使用ToolTip</strong>
</p>
<p>官方也已经给出方法:</p>
<p><a href="http://extjs.com/forum/showthread.php?p=112125#post112125" target="_blank">http://extjs.com/forum/showthread.php?p=112125#post112125</a>
</p>
<p><a href="http://extjs.com/forum/showthread.php?t=55690" target="_blank">http://extjs.com/forum/showthread.php?t=55690</a>
</p>
<p>以上给出的方法是可以让一个grid里面的元素共享一个tooltip对象。一般用来做rowtip</p>
<p>不过3.0有更好的方式,如下:</p>
<p>&nbsp;</p>
<p><strong>3.行提示 RowTip</strong>
</p>
<p>ExtJS3.0新增的方法,设置tooltip的<span class="Apple-style-span" style="border-collapse: separate; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; white-space: normal; font-family: Simsun; color: rgb(0, 0, 0); font-size: medium;"><span class="Apple-style-span" style="font-size: 13px; font-weight: bold; font-family: Tahoma,Verdana,Arial,Helvetica,sans-serif;"><a style="color: rgb(8, 55, 114); text-decoration: none;" href="http://extjs.com/deploy/ext-3.0-rc2/docs/source/ToolTip.html#cfg-Ext.ToolTip-delegate" target="_blank">delegate</a>
</span>
</span>
</p>
<p>代码:</p>
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">&nbsp;1</span>&nbsp;<span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;myGrid&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Ext.grid.gridPanel(gridConfig);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;2</span>&nbsp;<span style="color: rgb(0, 0, 0);">myGrid.on('render',&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">(grid)&nbsp;{&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;3</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;store&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;grid.getStore();&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Capture&nbsp;the&nbsp;Store.&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;4</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;5</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;view&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;grid.getView();&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Capture&nbsp;the&nbsp;GridView.&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;6</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;7</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;myGrid.tip&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Ext.ToolTip({&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;8</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target:&nbsp;view.mainBody,&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;The&nbsp;overall&nbsp;target&nbsp;element.&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">&nbsp;9</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">10</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delegate:&nbsp;'.x</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">grid3</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">row',&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Each&nbsp;grid&nbsp;row&nbsp;causes&nbsp;its&nbsp;own&nbsp;seperate&nbsp;show&nbsp;and&nbsp;hide.&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">11</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">12</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trackMouse:&nbsp;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Moving&nbsp;within&nbsp;the&nbsp;row&nbsp;should&nbsp;not&nbsp;hide&nbsp;the&nbsp;tip.&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">13</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">14</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderTo:&nbsp;document.body,&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Render&nbsp;immediately&nbsp;so&nbsp;that&nbsp;tip.body&nbsp;can&nbsp;be&nbsp;referenced&nbsp;prior&nbsp;to&nbsp;the&nbsp;first&nbsp;show.&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">15</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">16</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listeners:&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Change&nbsp;content&nbsp;dynamically&nbsp;depending&nbsp;on&nbsp;which&nbsp;element&nbsp;triggered&nbsp;the&nbsp;show.&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">17</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">18</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beforeshow:&nbsp;</span><span style="color: rgb(0, 0, 255);">function</span><span style="color: rgb(0, 0, 0);">&nbsp;updateTipBody(tip)&nbsp;{&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">19</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);">&nbsp;rowIndex&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;view.findRowIndex(tip.triggerElement);&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">20</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tip.body.dom.innerHTML&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Over&nbsp;Record&nbsp;ID&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;store.getAt(rowIndex).id;&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">21</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">22</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">23</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;<br />
</span><span style="color: rgb(0, 128, 128);">24</span>&nbsp;<span style="color: rgb(0, 0, 0);">});&nbsp; <br />
</span></div>
<br />
<p><strong>4.其他方法</strong>
</p>
监听GridView或Store的事件,然后通过rowSelector或getRow方法来遍历,自己加tooltip... 这个方式请无视吧<br />
<strong></strong>
<p>
</p>
<img src ="http://www.blogjava.net/atian25/aggbug/284885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/atian25/" target="_blank">乾为天|天猪</a> 2009-07-01 10:14 <a href="http://www.blogjava.net/atian25/archive/2009/07/01/extjs_grid_tooltip.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Wazaabi 2.0 让我看到了自定义界面设计器的希望</title><link>http://www.blogjava.net/leeguannan/archive/2009/07/01/284883.html</link><dc:creator>阿南</dc:creator><author>阿南</author><pubDate>Wed, 01 Jul 2009 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/leeguannan/archive/2009/07/01/284883.html</guid><wfw:comment>http://www.blogjava.net/leeguannan/comments/284883.html</wfw:comment><comments>http://www.blogjava.net/leeguannan/archive/2009/07/01/284883.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/leeguannan/comments/commentRss/284883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leeguannan/services/trackbacks/284883.html</trackback:ping><description><![CDATA[<p>&#160;&#160;&#160; <big>Wazaabi 2.0</big> 基于 Eclipse3.4/EMF/GEF 的动态界面设计和现实组件，依赖EMF进行界面描述，依赖GEF进行界面显示。</p>  <p>&#160;&#160;&#160; 比较起XUI,XSWT，它的设计器更加的完善，功能比较1.0版本也有很大的提高，而且作者也提出了使用EMF进行数据绑定的思路和实现。</p>  <p><img src="http://www.wazaabi.org/images/thumb/1/14/Screenshoot_demo1.GIF/500px-Screenshoot_demo1.GIF" /> </p>  <p>&#160;&#160;&#160; 麻烦的是它本身只提供了Fill和Row两种布局，Button、Text、List、Label这些基本控件。还好作者的文档功底不错，简单几张图就把自己的设计思路描述的清清楚楚，高手所为，赞一个！</p>  <p>&#160;&#160; 在它基础上可以很简单的进行扩展，而且比扩展VE要简单的多~这是我喜欢的！现在对它的使用本人还是处于观望态度，一方面等待它的持续更新，另一方面等待E4的激动人心的放出！</p>  <p>&#160;&#160;&#160; 有兴趣的朋友可以看看<a title="http://www.wazaabi.org/index.php?title=Main_Page" href="http://www.wazaabi.org/index.php?title=Main_Page">http://www.wazaabi.org/index.php?title=Main_Page</a></p><img src ="http://www.blogjava.net/leeguannan/aggbug/284883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leeguannan/" target="_blank">阿南</a> 2009-07-01 10:13 <a href="http://www.blogjava.net/leeguannan/archive/2009/07/01/284883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创) 发布一个自己开发的小游戏</title><link>http://www.blogjava.net/xmatthew/archive/2009/06/30/284825.html</link><dc:creator>x.matthew</dc:creator><author>x.matthew</author><pubDate>Tue, 30 Jun 2009 11:43:00 GMT</pubDate><guid>http://www.blogjava.net/xmatthew/archive/2009/06/30/284825.html</guid><wfw:comment>http://www.blogjava.net/xmatthew/comments/284825.html</wfw:comment><comments>http://www.blogjava.net/xmatthew/archive/2009/06/30/284825.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/xmatthew/comments/commentRss/284825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xmatthew/services/trackbacks/284825.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 记得刚开始学习中国象棋，还不太明白象棋的规则。所以自然是下得比较糗，所以也不知道是从哪里学来了这种玩法，就是只使用半张的 棋盘空间，把红黑两方的棋子都反面朝下打散，然后玩家就一个个把棋子翻过来，比谁的棋子大，如果相邻的棋子，大的一方可以把小的一方吃掉，到最后谁的棋子先被吃光，则就输了。&nbsp;&nbsp;<a href='http://www.blogjava.net/xmatthew/archive/2009/06/30/284825.html'>阅读全文</a><img src ="http://www.blogjava.net/xmatthew/aggbug/284825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xmatthew/" target="_blank">x.matthew</a> 2009-06-30 19:43 <a href="http://www.blogjava.net/xmatthew/archive/2009/06/30/284825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各类WEB框架的工作机会和变化趋势（国外）</title><link>http://www.blogjava.net/bwlee/archive/2009/06/30/284817.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Tue, 30 Jun 2009 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2009/06/30/284817.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/284817.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2009/06/30/284817.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/284817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/284817.html</trackback:ping><description><![CDATA[最近比较有空一点，对目前比较流行的几个动态语言的WEB开发框架浏览了一下，主要是Django(python),CakePHP(php),Zend(php),Rails(Ruby),GRails(Goovy)，因为只是搜索网络，大致地扫描了一下相关的介绍，不是很详尽地研究，但总体来讲，还是Rails最火，资料多且新，GRails和CakePHP都是模仿Rails，利用工具生成固定的模板式的程序结构，开发人员只在其上再做进一步的开发，大概的感觉就是，整体来讲，降低了入门的门槛，但如果要做实际的工作，反而得花较多的精力去深入了解其内部的东西，包括架构、惯例、得深入地查阅其文档，以了解它说了的，和没有说出来的一些细节，才能进行实际的工作。<br />
优点呢，个人觉得这些框架把整体的共用的东西分层析出，使应用和框架得以分离，框架的复用和改进达到了一点的程度，加快了新产品的开发和提高了质量保证。对开发人员的要求有所变化，一个项目应该来讲，有一个熟悉整体技术的高手带队，其他人能完成分解工作这样的模式有很大帮助，也就是说，整体降低了项目的成本。但没有实际的项目对照数据，不能肯定是否一定适合国内的一些定制型项目应用。<br />
<br />
从SimplyHired网站上，了解到的工作职位需求趋势图如下，在排除J2EE的情况下，Rails职位是遥遥领先于其他的，其影响力可见一斑，如图<br />
<br />
<!-- BEGIN TREND GRAPH -->
<div style="width: 540px;" class="chart"><img src="http://www.simplyhired.com/a/jobtrends/graph/q-Rails,+Django,+Cakephp,+Symfony,+Grails,+Zend/t-line/embed" alt="Rails, Django, Cakephp, Symfony, Grails, Zend trends" />
<table style="font-size: 80%;" width="100%">
    <tbody>
        <tr>
            <td width="2%">&nbsp;</td>
            <td align="left"><a href="http://www.simplyhired.com/a/jobtrends/trend/q-Rails,+Django,+Cakephp,+Symfony,+Grails,+Zend">Rails, Django, Cakephp, Symfony, Grails, Zend trends</a></td>
            <td align="right"><a href="http://www.simplyhired.com/a/jobs/list/q-Rails">Rails jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Django">Django jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Cakephp">Cakephp jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Symfony">Symfony jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Grails">Grails jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Zend">Zend jobs</a></td>
            <td width="2%">&nbsp;</td>
        </tr>
    </tbody>
</table>
</div>
<!-- END TREND GRAPH -->
估计主要来自于近来互联网应用方面的需求。<br />
如果加上J2EE，这个图形立马体现出谁才是真正的王者。在企业级应用上的成功，使得J2EE体系依然是最大的应用首先项<br />
<br />
<!-- BEGIN TREND GRAPH -->
<div style="width: 540px;" class="chart"><img src="http://www.simplyhired.com/a/jobtrends/graph/q-Rails,+Django,+Cakephp,+J2ee,+Grails,+Zend/t-line/embed" alt="Rails, Django, Cakephp, J2ee, Grails, Zend trends" />
<table style="font-size: 80%; background-color: highlight;" width="100%">
    <tbody>
        <tr>
            <td width="2%">&nbsp;</td>
            <td align="left"><a href="http://www.simplyhired.com/a/jobtrends/trend/q-Rails,+Django,+Cakephp,+J2ee,+Grails,+Zend">Rails, Django, Cakephp, J2ee, Grails, Zend trends</a></td>
            <td align="right"><a href="http://www.simplyhired.com/a/jobs/list/q-Rails">Rails jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Django">Django jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Cakephp">Cakephp jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-J2ee">J2ee jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Grails">Grails jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Zend">Zend jobs</a></td>
            <td width="2%">&nbsp;</td>
        </tr>
    </tbody>
</table>
</div>
<!-- END TREND GRAPH -->
<br />
Since October 2007, the following has occurred:
<ul>
    <li class="trends_stats"><a href="http://www.simplyhired.com/a/jobs/list/q-Rails">Rails jobs</a>
    increased 38%    </li>
    <li class="trends_stats"><a href="http://www.simplyhired.com/a/jobs/list/q-Django">Django jobs</a>
    increased 180%    </li>
    <li class="trends_stats"><a href="http://www.simplyhired.com/a/jobs/list/q-Cakephp">Cakephp jobs</a>
    increased 337%    </li>
    <li class="trends_stats"><a href="http://www.simplyhired.com/a/jobs/list/q-J2ee">J2ee jobs</a>
    <span style="color: red;">    decreased 26%    </span></li>
    <li class="trends_stats"><a href="http://www.simplyhired.com/a/jobs/list/q-Grails">Grails jobs</a>
    increased 237%    </li>
    <li class="trends_stats"><a href="http://www.simplyhired.com/a/jobs/list/q-Zend">Zend jobs</a>
    increased 140%    </li>
</ul>
<br />
具体的趋势数据也在一定程度上反应了市场对J2EE的审美疲劳，或者有Sun被收购的忧虑，按道理讲，这个应该不会影响太多，毕竟Oracle也是Java EE的重要推动力量的受益者，当然最大的受益者应该是IBM。<br />
<br />
其中，Cakephp增长势头尤其迅猛，可能是因为它是基于PHP的Rails吧，挟庞大的PHP社区和网站建设者的力量，套上Rails的盔甲，自然是威风凛凛，锐不可挡！<br />
<br />
GRails表现同样抢眼，Groovy的语法类似Java，但更加简洁，从Java转到Groovy的成本估计只是需要熟悉下库文档就够了，同样借鉴了Rails的思想，借用其网站上的一句评论，I'm really really impressed how it instantly works.
<br />
<br />
Django是Python的快速WEB开发环境和框架，Python社区的强大并且大有取代Plone/Zope之趋势。<br />
<br />
<!-- BEGIN TREND GRAPH -->
<div style="width: 540px;" class="chart"><img src="http://www.simplyhired.com/a/jobtrends/graph/q-Plone,+Django/t-line/embed" alt="Plone, Django trends" />
<table style="font-size: 80%;" width="100%">
    <tbody>
        <tr>
            <td width="2%">&nbsp;</td>
            <td align="left"><a href="http://www.simplyhired.com/a/jobtrends/trend/q-Plone,+Django">Plone, Django trends</a></td>
            <td align="right"><a href="http://www.simplyhired.com/a/jobs/list/q-Plone">Plone jobs</a> | <a href="http://www.simplyhired.com/a/jobs/list/q-Django">Django jobs</a></td>
            <td width="2%">&nbsp;</td>
        </tr>
    </tbody>
</table>
</div>
<!-- END TREND GRAPH -->
<br />
<br />
Zend的IDE开发环境让人感觉不错，大概这也是一个吸引人的亮点，毕竟，效率就是利润。PHP的开发环境也在改善，在Eclipse下的PDT好像发展也很快了，Zend也是基于Eclipse的，有收费和社区两种版本。<br />
<br />
个人偏好，由于对php不熟悉，对Zend和Cakephp只是大致了解了下，不是很有兴趣深入，Plone以前用过，但不是什么大项目，也谈不上有很好的印象，只是因为对Python比较熟，相对而言，更有兴趣去了解django，只是始终对Python的缩进式语法感觉不爽，不是太喜欢用。<br />
<br />
如果有时间的话，可能会深入研究一下GRails，这东西看起来的确很酷，并且学习成本应该也很低。<br />
<br />
欢迎有实践经验的先行者给些意见。<br />
<br /><img src ="http://www.blogjava.net/bwlee/aggbug/284817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2009-06-30 18:37 <a href="http://www.blogjava.net/bwlee/archive/2009/06/30/284817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布CometQueue</title><link>http://www.blogjava.net/second/archive/2009/06/30/284415.html</link><dc:creator>Danfo Yam</dc:creator><author>Danfo Yam</author><pubDate>Tue, 30 Jun 2009 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/second/archive/2009/06/30/284415.html</guid><wfw:comment>http://www.blogjava.net/second/comments/284415.html</wfw:comment><comments>http://www.blogjava.net/second/archive/2009/06/30/284415.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/second/comments/commentRss/284415.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/second/services/trackbacks/284415.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前段时间做了一个项目，从仪器上采集数据（仪器会源源不断的发送数据）并将数据push到web browser上，由于要保证能够离线操作，采用在客户端电脑上部署一个嵌入小jetty服务器的方案，因此不能够安装AMQ来实现push的功能(AMQ太大)，同时要保证仪器采集的数据不会丢失，导致不能使用jetty continuations(丢失数据频繁)&nbsp;&nbsp;<a href='http://www.blogjava.net/second/archive/2009/06/30/284415.html'>阅读全文</a><img src ="http://www.blogjava.net/second/aggbug/284415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/second/" target="_blank">Danfo Yam</a> 2009-06-30 16:39 <a href="http://www.blogjava.net/second/archive/2009/06/30/284415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下启动oracle10g的em和isqlplus  </title><link>http://www.blogjava.net/cool2009/archive/2009/06/30/284790.html</link><dc:creator>龙华城</dc:creator><author>龙华城</author><pubDate>Tue, 30 Jun 2009 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/cool2009/archive/2009/06/30/284790.html</guid><wfw:comment>http://www.blogjava.net/cool2009/comments/284790.html</wfw:comment><comments>http://www.blogjava.net/cool2009/archive/2009/06/30/284790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cool2009/comments/commentRss/284790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cool2009/services/trackbacks/284790.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Linux下启动oracle10g的em和isqlplus的方法:<br><br>注:$ORACLE_HOME为oracle的安装路径<br><br>1,使用EM(enterprise managment)<br><br>1.1启动EM<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/cool2009/archive/2009/06/30/284790.html'>阅读全文</a><img src ="http://www.blogjava.net/cool2009/aggbug/284790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cool2009/" target="_blank">龙华城</a> 2009-06-30 16:30 <a href="http://www.blogjava.net/cool2009/archive/2009/06/30/284790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>