<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky8.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/zhlwish" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/zhlwish" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 30 Jul 2010 11:48:32 GMT</lastBuildDate><title>没有比人更高的山</title><description>www.zhlwish.com</description><link>http://www.zhlwish.com</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Fri, 30 Jul 2010 11:50:30 GMT</pubDate><item><title>MySQL中drop user if exists功能的实现方法</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753279/6047504/1/item.html</link><content:encoded>&lt;p&gt;在编写可以重复执行的创建数据库的脚本时，我们知道下面语句可以测试数据库是否存在，如果存在的话就删除掉&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;DROP&lt;/span&gt; &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;DATABASE&lt;/span&gt; &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;IF&lt;/span&gt; &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;EXISTS&lt;/span&gt; testdb;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;但是我们没办法测试用户是否存在，MySQL是没有drop user if exist这样的功能的。详见：&lt;a href=&quot;http://bugs.mysql.com/bug.php?id=19166&quot;&gt;http://bugs.mysql.com/bug.php?id=19166&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不过有另外一种变通的办法可以实现同样的功能，代码如下：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# a way to implement the functionality of 'drop user if exists' which mysql does&lt;/span&gt;
&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# not support for now&lt;/span&gt;
&lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;GRANT&lt;/span&gt; usage &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;ON&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;*.*&lt;/span&gt; &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;TO&lt;/span&gt; testdb &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;IDENTIFIED&lt;/span&gt; &lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;BY&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;'testdb'&lt;/span&gt;;
&lt;span style=&quot;color: #993333; font-weight: bold;&quot;&gt;DROP&lt;/span&gt; user testdb;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;在执行grant的时候，如果数据库中不存在这个用户，那么MySQL会创建一个用户，并且赋以usage权限，usage权限等同于“no privileges”，至于为什么会有这个特殊的权限请见&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_usage&quot;&gt;http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_usage&lt;/a&gt;，主要是在修改已有用户的grant option时使用的。&lt;/p&gt;
&lt;p&gt;另外，使用MySQL5.0.0时，执行drop user时并不会删除其权限。MySQL5.0.2已经修正了这个问题，删除用户的时候会一并连权限以前删除。详见：&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/drop-user.html&quot;&gt;http://dev.mysql.com/doc/refman/5.0/en/drop-user.html&lt;/a&gt;&lt;/p&gt;

&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753279/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753279/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753279/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753279/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/07/30/mysql-drop-user-if-not/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>在编写可以重复执行的创建数据库的脚本时，我们知道下面语句可以测试数据库是否存在，如果存在的话就删除掉

1
DROP DATABASE IF EXISTS testdb;

但是我们没办法测试用户是否存在，MySQL是没有drop user if exist这样的功能的。详见：http://bugs.mysql.com/bug.php?id=19166
不过有另外一种变通的办法可以实现同样的功能，代码如下：

1
2
3
4
# a way to implement the functionality of 'drop user if exists' which mysql does
# not support for now
GRANT usage ON *.* TO testdb IDENTIFIED BY 'testdb';
DROP user testdb;

在执行grant的时候，如果数据库中不存在这个用户，那么MySQL会创建一个用户，并且赋以usage权限，usage权限等同于“no privileges”，至于为什么会有这个特殊的权限请见http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_usage，主要是在修改已有用户的grant option时使用的。
另外，使用MySQL5.0.0时，执行drop user时并不会删除其权限。MySQL5.0.2已经修正了这个问题，删除用户的时候会一并连权限以前删除。详见：http://dev.mysql.com/doc/refman/5.0/en/drop-user.html&lt;img src=&quot;http://www1.feedsky.com/t1/397753279/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753279/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753279/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753279/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>php</category><category>MySQL</category><category>Java笔记</category><pubDate>Fri, 30 Jul 2010 19:48:32 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/07/30/mysql-drop-user-if-not/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=218</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/07/30/mysql-drop-user-if-not/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753279/6047504</fs:itemid></item><item><title>Java反编译工具Jad详解</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753280/6047504/1/item.html</link><content:encoded>&lt;p&gt;做项目过程中需要反编译一个jar包，于是作了一些学习，记录下来。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/JAD_(JAva_Decompiler)&quot;&gt;Jad&lt;/a&gt;(&lt;strong&gt;JA&lt;/strong&gt;va &lt;strong&gt;D&lt;/strong&gt;ecompiler)是一个Java的反编译器，可以通过命令行把Java的class文件反编译成源代码。&lt;/p&gt;
&lt;p&gt;如果你在使用编写代码的时候遇到找不到源代码的第三方库，而且你又需要看看这个库的具体实现，那么你就需要使用这个东西。而且如果你是使用Eclipse的话，还有一个Eclipse插件&lt;a href=&quot;http://jadclipse.sourceforge.net/wiki/index.php/Main_Page&quot;&gt;JadClipse&lt;/a&gt;，&lt;a href=&quot;http://jadclipse.sourceforge.net/wiki/index.php/Main_Page&quot;&gt;JadClipse&lt;/a&gt;提供一个class文件查看器可以直接打开class文件查看其反编译后的源代码， 太方便了，太方便了！&lt;/p&gt;
&lt;p&gt;不过，可惜的是这个开源项目似乎已经关闭了，官方网站已经上不去了，有个叫Tomas Varaneckas的好心人收集了所有的版本提供给大家下载：&lt;a href=&quot;Mirrorhttp://www.varaneckas.com/jad&quot;&gt;JAD Java Decompiler Download &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;而且这个最新的版本也只支持Java 4，不支持Java 5。还有一个叫做&lt;a href=&quot;http://java.decompiler.free.fr&quot;&gt;JD-Core&lt;/a&gt;的工具支持Java 5的新特性，如enum等，而且它提供独立的GUI程序&lt;a href=&quot;http://java.decompiler.free.fr/?q=jdgui&quot;&gt;JD-GUI&lt;/a&gt;和基于Eclipse的插件&lt;a href=&quot;http://java.decompiler.free.fr/?q=jdeclipse&quot;&gt;JD-Eclipse&lt;/a&gt;，也很方便。但是对于&lt;a href=&quot;http://java.decompiler.free.fr&quot;&gt;JD-Core&lt;/a&gt;，作者没有提供下载的链接，他说“Open the sources of JD-Core is not on my roadmap: I spent too many time on this project.”当然后面也有一大篇文章是别人用来骂他的，可以看&lt;a href=&quot;http://java.decompiler.free.fr/?q=node/116&quot;&gt;Add JD-Core to the download list&lt;/a&gt;，蛮有意思。&lt;/p&gt;
&lt;p&gt;我的项目中需要将第三方库反编译出来，让后对其进行修改，然后再编译，不仅仅是查看，因此只能用命令行的Jad来做。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用方法：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[1] &lt;strong&gt;反编译一个class文件&lt;/strong&gt;：jad example.class，会生成example.jad，用文本编辑器打开就是java源代码&lt;/p&gt;
&lt;p&gt;[2] &lt;strong&gt;指定生成源代码的后缀名&lt;/strong&gt;：jad -sjava example.class，生成example.java&lt;/p&gt;
&lt;p&gt;[3] &lt;strong&gt;改变生成的源代码的名称&lt;/strong&gt;，可以先使用-p将反编译后的源代码输出到控制台窗口，然后使用重定向，输出到文件：jad -p example.class &amp;gt; myexample.java&lt;/p&gt;
&lt;p&gt;[4] &lt;strong&gt;把源代码文件输出到指定的目录&lt;/strong&gt;：jad -dnewdir -sjava example.class，在newdir目录下生成example.java&lt;/p&gt;
&lt;p&gt;[5] &lt;strong&gt;把packages目录下的class文件全部反编译&lt;/strong&gt;：jad -sjava packages/*.class&lt;/p&gt;
&lt;p&gt;[6] 把packages目录&lt;strong&gt;以及子目录下&lt;/strong&gt;的文件全部反编译：jad -sjava packages/**/*.class，不过你仍然会发现所有的源代码文件被放到了同一个文件中，没有按照class文件的包路径建立起路径&lt;/p&gt;
&lt;p&gt;[7] 把packages目录以及子目录下的文件全部反编译&lt;strong&gt;并建立和java包一致的文件夹路径&lt;/strong&gt;，可以使用-r命令：jad -r -sjava packages/**/*.class&lt;/p&gt;
&lt;p&gt;[8] 当重复使用命令反编译时，Jad会提示“whether you want to overwrite it or not”，使用-o可以&lt;strong&gt;强制覆盖旧文件&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[9] 还有其他的参数可以设置生成的源代码的格式，可以输入jad命令查看帮助，这里有个人做了简单的翻译：&lt;a href=&quot;http://www.blogjava.net/supercrsky/articles/199217.html&quot;&gt;jad命令总结&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[10] 当然，你会发现有些源文件头部有些注释信息，不用找了，jad没有参数可以去掉它，用别的办法吧。&lt;/p&gt;
&lt;p&gt;最后，jad不能直接反编译jar包，直接解压了再反编译吧（这个方法很显然，我实在不好意思写出来）。&lt;/p&gt;

&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753280/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753280/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753280/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753280/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/06/26/jad/feed/</wfw:commentRss><slash:comments>1</slash:comments><description>做项目过程中需要反编译一个jar包，于是作了一些学习，记录下来。
Jad(JAva Decompiler)是一个Java的反编译器，可以通过命令行把Java的class文件反编译成源代码。
如果你在使用编写代码的时候遇到找不到源代码的第三方库，而且你又需要看看这个库的具体实现，那么你就需要使用这个东西。而且如果你是使用Eclipse的话，还有一个Eclipse插件JadClipse，JadClipse提供一个class文件查看器可以直接打开class文件查看其反编译后的源代码， 太方便了，太方便了！
不过，可惜的是这个开源项目似乎已经关闭了，官方网站已经上不去了，有个叫Tomas Varaneckas的好心人收集了所有的版本提供给大家下载：JAD Java Decompiler Download 
而且这个最新的版本也只支持Java 4，不支持Java 5。还有一个叫做JD-Core的工具支持Java 5的新特性，如enum等，而且它提供独立的GUI程序JD-GUI和基于Eclipse的插件JD-Eclipse，也很方便。但是对于JD-Core，作者没有提供下载的链接，他说“Open the sources of JD-Core is not on my roadmap: I spent too many time on this project.”当然后面也有一大篇文章是别人用来骂他的，可以看Add JD-Core to the download list，蛮有意思。
我的项目中需要将第三方库反编译出来，让后对其进行修改，然后再编译，不仅仅是查看，因此只能用命令行的Jad来做。
使用方法：
[1] 反编译一个class文件：jad example.class，会生成example.jad，用文本编辑器打开就是java源代码
[2] 指定生成源代码的后缀名：jad -sjava example.class，生成example.java
[3] 改变生成的源代码的名称，可以先使用-p将反编译后的源代码输出到控制台窗口，然后使用重定向，输出到文件：jad -p example.class &amp;#62; myexample.java
[4] 把源代码文件输出到指定的目录：jad -dnewdir -sjava example.class，在newdir目录下生成example.java
[5] 把packages目录下的class文件全部反编译：jad -sjava packages/*.class
[6] 把packages目录以及子目录下的文件全部反编译：jad -sjava packages/**/*.class，不过你仍然会发现所有的源代码文件被放到了同一个文件中，没有按照class文件的包路径建立起路径
[7] 把packages目录以及子目录下的文件全部反编译并建立和java包一致的文件夹路径，可以使用-r命令：jad -r [...]&lt;img src=&quot;http://www1.feedsky.com/t1/397753280/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753280/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753280/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753280/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>反编译</category><category>Java笔记</category><category>jad</category><pubDate>Sat, 26 Jun 2010 19:18:34 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/06/26/jad/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=196</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/06/26/jad/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753280/6047504</fs:itemid></item><item><title>Wordpress旗下的bbPress内网与外网访问设置</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753281/6047504/1/item.html</link><content:encoded>&lt;p&gt;有很多&lt;a href=&quot;http://wordpress.org/&quot;&gt;WordPress&lt;/a&gt;使用者都想有个能和&lt;a href=&quot;http://wordpress.org/&quot;&gt;WordPress&lt;/a&gt;很好整合的论坛系统，现在有了&lt;a href=&quot;http://bbpress.org/&quot;&gt;bbPress&lt;/a&gt;，大家可以少折腾了。&lt;/p&gt;
&lt;p&gt;作为一款轻量级的论坛程序，&lt;a href=&quot;http://bbpress.org/&quot;&gt;bbPress&lt;/a&gt;之前一直默默发展，几乎没有任何推广，而且使用范围和使用人数都比较少，但进入2010年一来，&lt;a href=&quot;http://wordpress.org/&quot;&gt;WordPress&lt;/a&gt;官方逐渐加大对&lt;a href=&quot;http://bbpress.org/&quot;&gt;bbPress&lt;/a&gt;的投入。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.wopus.org/bbpress/how-install-bbpress/2068.html&quot;&gt;bbPress安装详细教程&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.dian.org.cn/ophone/bbs/&quot;&gt;OPhone俱乐部社区&lt;/a&gt; 是我在Dian团队的服务器上使用bbPress架设的一个小型论坛。因为服务器在网关内部，而且由于某些原因没有设置成内网也可以用域名访问，如服务器是192.168.0.3，在内网我们就用这个IP了，但外网就必须用域名。&lt;/p&gt;
&lt;p&gt;在配置&lt;a href=&quot;http://wordpress.org/&quot;&gt;WordPress&lt;/a&gt;的时候也会出现，配置好了内网，外网访问不了，这个问题oo同学已经很好的解决了&lt;a href=&quot;http://www.ooobj.com/2009/10/wp-connect/&quot;&gt;《wordpress内网与外网同时访问的问题》&lt;/a&gt;，我是google出来的，在此先恭喜oo同学。&lt;/p&gt;
&lt;p&gt;我也尝试用同样的方法配置&lt;a href=&quot;http://bbpress.org&quot;&gt;bbPress&lt;/a&gt;，结果发现不行，因为&lt;a href=&quot;http://bbpress.org&quot;&gt;bbPress&lt;/a&gt;设计的时候可能还是有些不合理。最终我找到一个不能称其为方法的方法:&lt;/p&gt;
&lt;p&gt;[1]打开bbPress安装目录下的bb-includes\functions.bb-meta.php文件&lt;br /&gt;
[2]找到函数bb_get_option_from_db的定义&lt;br /&gt;
[3]在return前增加一下代码：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;    &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$option&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'uri'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000088;&quot;&gt;$rip&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'REMOTE_ADDR'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&quot;color: #990000;&quot;&gt;strpos&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$rip&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'192.168'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;!==&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;false&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span style=&quot;color: #000088;&quot;&gt;$r&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'http://192.168.0.3/ophone/bbs'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753281/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753281/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753281/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753281/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/06/25/bbpress_lan_wan_setting/feed/</wfw:commentRss><slash:comments>1</slash:comments><description>有很多WordPress使用者都想有个能和WordPress很好整合的论坛系统，现在有了bbPress，大家可以少折腾了。
作为一款轻量级的论坛程序，bbPress之前一直默默发展，几乎没有任何推广，而且使用范围和使用人数都比较少，但进入2010年一来，WordPress官方逐渐加大对bbPress的投入。
bbPress安装详细教程
OPhone俱乐部社区 是我在Dian团队的服务器上使用bbPress架设的一个小型论坛。因为服务器在网关内部，而且由于某些原因没有设置成内网也可以用域名访问，如服务器是192.168.0.3，在内网我们就用这个IP了，但外网就必须用域名。
在配置WordPress的时候也会出现，配置好了内网，外网访问不了，这个问题oo同学已经很好的解决了《wordpress内网与外网同时访问的问题》，我是google出来的，在此先恭喜oo同学。
我也尝试用同样的方法配置bbPress，结果发现不行，因为bbPress设计的时候可能还是有些不合理。最终我找到一个不能称其为方法的方法:
[1]打开bbPress安装目录下的bb-includes\functions.bb-meta.php文件
[2]找到函数bb_get_option_from_db的定义
[3]在return前增加一下代码：

1
2
3
4
5
6
7
    if&amp;#40;$option == 'uri'&amp;#41;
    &amp;#123;
        $rip = $_SERVER&amp;#91;'REMOTE_ADDR'&amp;#93;;
        if&amp;#40; strpos&amp;#40;$rip, '192.168'&amp;#41; !== false &amp;#41; &amp;#123;
            $r = 'http://192.168.0.3/ophone/bbs';
      [...]&lt;img src=&quot;http://www1.feedsky.com/t1/397753281/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753281/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753281/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753281/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Web开发</category><pubDate>Fri, 25 Jun 2010 22:47:22 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/06/25/bbpress_lan_wan_setting/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=190</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/06/25/bbpress_lan_wan_setting/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753281/6047504</fs:itemid></item><item><title>Java注释中的@deprecated与源代码中的@Deprecated</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753282/6047504/1/item.html</link><content:encoded>&lt;p&gt;首先，请注意标题，这两个标记有大小写之分，一个是&lt;strong&gt;D&lt;/strong&gt;，一个是&lt;strong&gt;d&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;源代码标记&lt;a href=&quot;http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/deprecation/deprecation.html&quot;&gt;@Deprecated&lt;/a&gt;是在JDK1.5中作为内置的annotation引入的，用于表明类(class)、方法(method)、字段(field)已经不再推荐使用，并且在以后的JDK版本中可能将其删除，编译器在默认情况下检测到有此标记的时候会提示警告信息。&lt;/p&gt;
&lt;p&gt;Java注释中的@deprecated用于在用&lt;a href=&quot;http://java.sun.com/j2se/javadoc/&quot;&gt;Javadoc&lt;/a&gt;工具生成文档的时候，标注此类/接口、方法、字段已经被废止。&lt;/p&gt;
&lt;p&gt;不过后者还有一个功能就是和源代码标记&lt;a href=&quot;http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/deprecation/deprecation.html&quot;&gt;@Deprecated&lt;/a&gt;同样的功能，在JDK1.4版本之后，该功能被&lt;a href=&quot;http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/deprecation/deprecation.html&quot;&gt;@Deprecated&lt;/a&gt;所取代。&lt;/p&gt;

&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753282/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753282/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753282/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753282/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/05/10/java_deprecated/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>首先，请注意标题，这两个标记有大小写之分，一个是D，一个是d。
源代码标记@Deprecated是在JDK1.5中作为内置的annotation引入的，用于表明类(class)、方法(method)、字段(field)已经不再推荐使用，并且在以后的JDK版本中可能将其删除，编译器在默认情况下检测到有此标记的时候会提示警告信息。
Java注释中的@deprecated用于在用Javadoc工具生成文档的时候，标注此类/接口、方法、字段已经被废止。
不过后者还有一个功能就是和源代码标记@Deprecated同样的功能，在JDK1.4版本之后，该功能被@Deprecated所取代。&lt;img src=&quot;http://www1.feedsky.com/t1/397753282/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753282/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753282/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753282/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Web开发</category><category>java annotation</category><category>Java笔记</category><category>javadoc</category><pubDate>Mon, 10 May 2010 20:55:25 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/05/10/java_deprecated/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=187</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/05/10/java_deprecated/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753282/6047504</fs:itemid></item><item><title>新的一年，做一个合格的被管理者</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753283/6047504/1/item.html</link><content:encoded>&lt;p&gt;到学校了，开始了新的学习和工作，心想这一年自己定个什么目标呢，在&lt;a href=&quot;http://t.sina.cn&quot;&gt;新浪微博&lt;/a&gt;上看到别人的一个转贴&lt;a href=&quot;http://blog.sina.com.cn/s/blog_486c0f670100h603.html&quot;&gt;《新年职场新十规》&lt;/a&gt;，瞄了一眼，感觉自己这些个方面还有点距离，不说合格的管理者，连被管理者都还不算合格。&lt;/p&gt;
&lt;p&gt;想起&lt;a href=&quot;http://rdc.taobao.com&quot;&gt;淘宝QA Team&lt;/a&gt;的一篇博文&lt;a href=&quot;http://rdc.taobao.com/blog/qa/?p=5550&quot;&gt;《如何做一个被管理者》&lt;/a&gt;，心想，我还是踏踏实实一步一个脚印先做一个合格的被管理者。顺便转发一下新浪网友的文章：&lt;/p&gt;
&lt;p&gt;1. Give your realistic deadlines­, Give yourself a bit of extra time to get the job done properly, and if you get things done early, the boss will be impressed.­&lt;br /&gt;
应当稍微高估完成既定任务需要花费的时间，并且，如果你“提前”完成任务，上司会对你印象深刻。­&lt;/p&gt;
&lt;p&gt;2. Get problems solved early­, Let your boss know immediately about any problems that crop up, he will be grateful if you give him enough time to solve it.­&lt;br /&gt;
提前解决问题­，出现任何突发问题都要立刻让上司知道，要是你给上司足够的时间来解决这些问题，他会对你心存感激。&lt;/p&gt;
&lt;p&gt;3. Don&amp;#8217;t be a yes /no man, be a good lieutenant.­ ­Offer polite, constructive criticism, and do your best to see how your boss&amp;#8217;s plans are feasible.­&lt;br /&gt;
不要做一个“唯唯诺诺者/否定论者”，做一个“优秀的中尉”。有礼貌地提出建设性意见，并尽可能看到上司方案的可行性。­&lt;/p&gt;
&lt;p&gt;4. Personal appearance is important­, Dress professionally, keep a breath mint and comb handy, and make a clean and well-organized work station.­&lt;br /&gt;
个人形象很重要­，永远专业着装、随身带薄荷糖和梳子，保持一个清洁并摆放整齐的工作场所。­&lt;/p&gt;
&lt;p&gt;5. Take the initiative, If you see there is room for improvement, write a proposal and float the idea to your boss.­&lt;br /&gt;
积极主动­，如果你发现可以改进的空间，那么写下建议并把想法告诉上司。­&lt;/p&gt;
&lt;p&gt;6. Respect your boss&amp;#8217;s time， Don&amp;#8217;t bother your boss if he is on phone or is elbows deep in work, and try to solve the problem if you can solve it yourself.­&lt;br /&gt;
­尊重上司的时间­，如果你的上司在打电话或者专心工作，最好重新考虑你要找他处理的问题的紧急程度，不要在你自己可以解决的小问题上浪费上司的时间。­&lt;/p&gt;
&lt;p&gt;7. Take on your boss&amp;#8217;s unpleasant tasks­, Volunteer to take on the nasty tasks that annoy your boss.­&lt;br /&gt;
接受上司指派的让人不愉快的任务­，主动接手这些任务，让你的上司从这些繁琐杂事中脱身而出。&lt;/p&gt;
&lt;p&gt;8. Speak up at meeting­, Try to have at least one well-informed opinion about the task at han.­&lt;br /&gt;
在会议上大声发言­，每次开会时，尽力对正在进行的任务提出至少一点可取的意见。­&lt;/p&gt;
&lt;p&gt;9. Put your boss at ease­, Make a note of anything you and the boss have in common, and conduct a good relationship with your boss and co-workers.­&lt;br /&gt;
让你的上司放松­，记下你与上司之间的所有共同点，并且与你的老板和同事建立融洽的关系。­&lt;/p&gt;
&lt;p&gt;10. Understand your shortcomings­ , Always be willing to learn a new skill to increase your personal effectives.­&lt;br /&gt;
认识自己的短处­，要永远乐于学习新技能，并提升你的工作效率。&lt;/p&gt;

&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753283/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753283/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753283/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753283/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/02/23/new-year/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>到学校了，开始了新的学习和工作，心想这一年自己定个什么目标呢，在新浪微博上看到别人的一个转贴《新年职场新十规》，瞄了一眼，感觉自己这些个方面还有点距离，不说合格的管理者，连被管理者都还不算合格。
想起淘宝QA Team的一篇博文《如何做一个被管理者》，心想，我还是踏踏实实一步一个脚印先做一个合格的被管理者。顺便转发一下新浪网友的文章：
1. Give your realistic deadlines­, Give yourself a bit of extra time to get the job done properly, and if you get things done early, the boss will be impressed.­
应当稍微高估完成既定任务需要花费的时间，并且，如果你“提前”完成任务，上司会对你印象深刻。­
2. Get problems solved early­, Let your boss know immediately about any problems that crop up, he will be grateful if you give him enough [...]&lt;img src=&quot;http://www1.feedsky.com/t1/397753283/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753283/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753283/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753283/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>管理</category><category>生存</category><category>成长</category><pubDate>Tue, 23 Feb 2010 21:46:46 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/02/23/new-year/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=185</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/02/23/new-year/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753283/6047504</fs:itemid></item><item><title>一个隐藏了将近2年的Bug</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753284/6047504/1/item.html</link><content:encoded>&lt;p&gt;最近在维护&lt;a href=&quot;http://ei.hust.edu.cn/efile&quot;&gt;华中科技大学电信系的电子档案库&lt;/a&gt;，发现了一个隐藏了将近2年的Bug，记录如下：&lt;/p&gt;
&lt;p&gt;需求：一个科研项目有一定的工作量，而每个项目有很多参与人，需要为每个参与人设置其工作量分配额度。当用户添加了一个项目时，需要同时添加其参与人:&lt;/p&gt;
&lt;p&gt;实现：当用户录入了科研项目信息之后，点击“添加参与人”的按钮，转向到选择参与人的页面，可以勾选任意数目的参与人，点击“保存”按钮后返回科研项目信息页面。&lt;/p&gt;
&lt;p&gt;在执行保存选择的参与人信息时，检查所选择的人员是否已经在科研项目的参与人中存在的代码如下：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;Iterator&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;string&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; iterator &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; selectedMemberList.&lt;span style=&quot;color: #006633;&quot;&gt;iterator&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; iterator.&lt;span style=&quot;color: #006633;&quot;&gt;hasNext&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    ParticipatorBean participatorBean &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; ParticipatorBean&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;long&lt;/span&gt; teacherId &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;Long&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;parseLong&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;iterator.&lt;span style=&quot;color: #006633;&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    Teacherbasicinfo teacher &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; ServiceProvider.&lt;span style=&quot;color: #006633;&quot;&gt;getTeacherInfoService&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;findById&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;teacherId&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #003399;&quot;&gt;Long&lt;/span&gt; id &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; teacher.&lt;span style=&quot;color: #006633;&quot;&gt;getTeacherId&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    participatorBean.&lt;span style=&quot;color: #006633;&quot;&gt;setTeacherId&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    participatorBean.&lt;span style=&quot;color: #006633;&quot;&gt;setTeacherName&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;teacher.&lt;span style=&quot;color: #006633;&quot;&gt;getTeacherName&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;participatorsMap.&lt;span style=&quot;color: #006633;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        participatorsMap.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;, &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        participators.&lt;span style=&quot;color: #006633;&quot;&gt;add&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;participatorBean&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;string&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;其中，selectedMemberList是选中的用户列表，ParticipatorBean是用来传递给前一个页面的参与人的Java类，Teacherbasicinfo是领域模型，代表教师基本信息，老师编号teacherId为Long型。&lt;/p&gt;
&lt;p&gt;participatorsMap是我从来去除重复的一个HashMap&lt;string , String&gt;，也就是说我每遍历一个Teacherbasicinfo，就将其teacherId转换成字符串型添加到这个Map中，在每次添加之前我先检查这个Map是否已经存在了（且不论这种方法的好与坏，这是我们几年前的代码了）&lt;/p&gt;
&lt;p&gt;这段代码无编译异常、无运行异常，但是却有&lt;strong&gt;逻辑异常&lt;/strong&gt;。有用户反映。多次选择的时候会有重复的项出现。&lt;/p&gt;
&lt;p&gt;经过多番调试，最后发现第八行代码有误，应该将&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;participatorsMap.&lt;span style=&quot;color: #006633;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;改成为：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;participatorsMap.&lt;span style=&quot;color: #006633;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;valueOf&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;id&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;恍然大悟，虽然我使用的是范型，但是Map的get方法仍然接受的是Object类型的参数，不对其参数进行检查，其put方法的签名为V put(K key, V value)，则会对key和value的类型都进行检查。&lt;/p&gt;
&lt;p&gt;这是我的错呢，还是Java的错，为啥不把get方法的参数用范型类型检查一下呢？可能是sun的工程师有别的考虑吧。&lt;/string&gt;&lt;/p&gt;

&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753284/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753284/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753284/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753284/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/01/24/%e4%b8%80%e4%b8%aa%e9%9a%90%e8%97%8f%e4%ba%86%e5%b0%86%e8%bf%912%e5%b9%b4%e7%9a%84bug/feed/</wfw:commentRss><slash:comments>2</slash:comments><description>最近在维护华中科技大学电信系的电子档案库，发现了一个隐藏了将近2年的Bug，记录如下：
需求：一个科研项目有一定的工作量，而每个项目有很多参与人，需要为每个参与人设置其工作量分配额度。当用户添加了一个项目时，需要同时添加其参与人:
实现：当用户录入了科研项目信息之后，点击“添加参与人”的按钮，转向到选择参与人的页面，可以勾选任意数目的参与人，点击“保存”按钮后返回科研项目信息页面。
在执行保存选择的参与人信息时，检查所选择的人员是否已经在科研项目的参与人中存在的代码如下：

1
2
3
4
5
6
7
8
9
10
11
12
13
for &amp;#40;Iterator&amp;#60;string&amp;#62; iterator = selectedMemberList.iterator&amp;#40;&amp;#41;; iterator.hasNext&amp;#40;&amp;#41;;&amp;#41; &amp;#123;
    ParticipatorBean participatorBean = new ParticipatorBean&amp;#40;&amp;#41;;
    long teacherId = Long.parseLong&amp;#40;iterator.next&amp;#40;&amp;#41;&amp;#41;;
    Teacherbasicinfo teacher = ServiceProvider.getTeacherInfoService&amp;#40;&amp;#41;.findById&amp;#40;teacherId&amp;#41;;
    Long id = teacher.getTeacherId&amp;#40;&amp;#41;;
    participatorBean.setTeacherId&amp;#40;id&amp;#41;;
    participatorBean.setTeacherName&amp;#40;teacher.getTeacherName&amp;#40;&amp;#41;&amp;#41;;
    if &amp;#40;participatorsMap.get&amp;#40;id&amp;#41; == null&amp;#41; &amp;#123;
    [...]&lt;img src=&quot;http://www1.feedsky.com/t1/397753284/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753284/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753284/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753284/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>JSF</category><category>Java笔记</category><pubDate>Sun, 24 Jan 2010 01:48:59 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/01/24/%e4%b8%80%e4%b8%aa%e9%9a%90%e8%97%8f%e4%ba%86%e5%b0%86%e8%bf%912%e5%b9%b4%e7%9a%84bug/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=152</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/01/24/%e4%b8%80%e4%b8%aa%e9%9a%90%e8%97%8f%e4%ba%86%e5%b0%86%e8%bf%912%e5%b9%b4%e7%9a%84bug/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753284/6047504</fs:itemid></item><item><title>好用的Wordpress代码高亮插件WP-Syntax</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753285/6047504/1/item.html</link><content:encoded>&lt;p&gt;开博几个月以来一直没有使用代码高亮插件，并不是我不想，而是找到的几个代码插件实在是太让人失望：有些很安装使用很复杂，让人摸不到头脑；有些效果太夸张，界面不够简单整洁；还有些用js来实现，但是遇到代码中有&amp;amp;gt;（大家都知道这是&amp;gt;的转义字符）这样的代码就出错了，而我有很多代码经过Wordpress的处理有些尖括号已经被转义字符替代了，有些XML代码就更厉害，通篇都是&amp;amp;gt; &amp;amp;lt;，让人头疼不已。&lt;/p&gt;
&lt;p&gt;今天偶然发现一个插件，名为&lt;a href=&quot;http://wordpress.org/extend/plugins/wp-syntax/&quot;&gt;WP-Syntax&lt;/a&gt;，顿时让我眼睛一亮，别人都说它是兼容性最好的代码高亮插件，经过试用，果不其然，我已经在本博客上全面启用这个插件了。&lt;/p&gt;
&lt;p&gt;使用方法其实很多，不妨我罗嗦两句，兼凑个字数，也算做个笔记：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;xml&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;pre&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;lang&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;java&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;line&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;escaped&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;//Java代码&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/pre&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;其中标签pre的属性&lt;strong&gt;lang表示语言类型&lt;/strong&gt;，&lt;strong&gt;line表示显示起始代码行号&lt;/strong&gt;，如果不设置则不显示行号，&lt;strong&gt;escaped表示是否代码是否为转义字符&lt;/strong&gt;，默认为false，即如果你的代码中有转义字符，则需要设置escaped=&amp;#8221;true&amp;#8221;&lt;/p&gt;

&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753285/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753285/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753285/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753285/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/01/24/wp-syntax/feed/</wfw:commentRss><slash:comments>5</slash:comments><description>开博几个月以来一直没有使用代码高亮插件，并不是我不想，而是找到的几个代码插件实在是太让人失望：有些很安装使用很复杂，让人摸不到头脑；有些效果太夸张，界面不够简单整洁；还有些用js来实现，但是遇到代码中有&amp;#38;gt;（大家都知道这是&amp;#62;的转义字符）这样的代码就出错了，而我有很多代码经过Wordpress的处理有些尖括号已经被转义字符替代了，有些XML代码就更厉害，通篇都是&amp;#38;gt; &amp;#38;lt;，让人头疼不已。
今天偶然发现一个插件，名为WP-Syntax，顿时让我眼睛一亮，别人都说它是兼容性最好的代码高亮插件，经过试用，果不其然，我已经在本博客上全面启用这个插件了。
使用方法其实很多，不妨我罗嗦两句，兼凑个字数，也算做个笔记：

1
&amp;#60;pre lang=&amp;#34;java&amp;#34; line=&amp;#34;1&amp;#34; escaped=&amp;#34;true&amp;#34;&amp;#62;//Java代码&amp;#60;/pre&amp;#62;

其中标签pre的属性lang表示语言类型，line表示显示起始代码行号，如果不设置则不显示行号，escaped表示是否代码是否为转义字符，默认为false，即如果你的代码中有转义字符，则需要设置escaped=&amp;#8221;true&amp;#8221;&lt;img src=&quot;http://www1.feedsky.com/t1/397753285/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753285/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753285/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753285/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Web开发</category><pubDate>Sun, 24 Jan 2010 01:04:49 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/01/24/wp-syntax/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=167</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/01/24/wp-syntax/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753285/6047504</fs:itemid></item><item><title>Java int型转换中文大写数字表示方法</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753286/6047504/1/item.html</link><content:encoded>&lt;p&gt;之前写过一篇博客，记录的是如何&lt;a href=&quot;http://www.zhlwish.com/2009/11/15/java-chinese-number-to-int/&quot;&gt;将Java中文大写数字转int型&lt;/a&gt;，今天遇到的问题是将Java int型转换成中文大写数字表示。&lt;/p&gt;
&lt;p&gt;下面是程序，很容易理解，不过，只支持10000以内的数字转换：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; intToChnNumConverter&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;int&lt;/span&gt; num&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; resultNumber &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;num &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;10000&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;||&lt;/span&gt; num &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #003399;&quot;&gt;HashMap&lt;/span&gt; chnNumbers &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;HashMap&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;零&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;一&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;2&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;二&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;3&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;三&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;4&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;四&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;5&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;五&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;6&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;六&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;7&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;七&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;8&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;八&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;9&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;九&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #003399;&quot;&gt;HashMap&lt;/span&gt; unitMap &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #003399;&quot;&gt;HashMap&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    unitMap.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    unitMap.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;10&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;十&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    unitMap.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;100&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;百&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    unitMap.&lt;span style=&quot;color: #006633;&quot;&gt;put&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1000&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;千&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; unitArray &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1000&lt;/span&gt;, &lt;span style=&quot;color: #cc66cc;&quot;&gt;100&lt;/span&gt;, &lt;span style=&quot;color: #cc66cc;&quot;&gt;10&lt;/span&gt;, &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    StringBuilder result &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; StringBuilder&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;int&lt;/span&gt; i &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;num &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;int&lt;/span&gt; n1 &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; num &lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt; unitArray&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;n1 &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
            result.&lt;span style=&quot;color: #006633;&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;chnNumbers.&lt;span style=&quot;color: #006633;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;n1&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;unitMap.&lt;span style=&quot;color: #006633;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;unitArray&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;n1 &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;result.&lt;span style=&quot;color: #006633;&quot;&gt;lastIndexOf&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;零&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;!=&lt;/span&gt; result.&lt;span style=&quot;color: #006633;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
                result.&lt;span style=&quot;color: #006633;&quot;&gt;append&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;零&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
            &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
        num &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; num &lt;span style=&quot;color: #339933;&quot;&gt;%&lt;/span&gt; unitArray&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;num &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;break&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
    resultNumber &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; result.&lt;span style=&quot;color: #006633;&quot;&gt;toString&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;resultNumber.&lt;span style=&quot;color: #006633;&quot;&gt;startsWith&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;零&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        resultNumber &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; resultNumber.&lt;span style=&quot;color: #006633;&quot;&gt;substring&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;resultNumber.&lt;span style=&quot;color: #006633;&quot;&gt;startsWith&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;一十&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        resultNumber &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; resultNumber.&lt;span style=&quot;color: #006633;&quot;&gt;substring&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;return&lt;/span&gt; resultNumber&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753286/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753286/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753286/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753286/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/01/21/java-int-to-chinese-number/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>之前写过一篇博客，记录的是如何将Java中文大写数字转int型，今天遇到的问题是将Java int型转换成中文大写数字表示。
下面是程序，很容易理解，不过，只支持10000以内的数字转换：

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public static String intToChnNumConverter&amp;#40;int num&amp;#41;&amp;#123;
    String resultNumber = null;
    if&amp;#40;num &amp;#62; 10000 &amp;#124;&amp;#124; num &amp;#60; 0&amp;#41;&amp;#123;
        return &amp;#34;&amp;#34;;
    &amp;#125;
    HashMap chnNumbers = new HashMap&amp;#40;&amp;#41;;
    chnNumbers.put&amp;#40;0, &amp;#34;零&amp;#34;&amp;#41;;
    chnNumbers.put&amp;#40;1, &amp;#34;一&amp;#34;&amp;#41;;
  [...]&lt;img src=&quot;http://www1.feedsky.com/t1/397753286/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753286/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753286/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753286/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Java笔记</category><pubDate>Thu, 21 Jan 2010 18:10:22 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/01/21/java-int-to-chinese-number/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=150</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/01/21/java-int-to-chinese-number/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753286/6047504</fs:itemid></item><item><title>一些国人开发的好用JS控件</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753287/6047504/1/item.html</link><content:encoded>&lt;p&gt;以前都是用国外开发的像&lt;a href=&quot;http://ckeditor.com/&quot; target=&quot;_blank&quot;&gt;FCKEditor&lt;/a&gt;（已经更名为CKEditor）、&lt;a href=&quot;http://ckeditor.com/&quot; target=&quot;_blank&quot;&gt;Flexigrid&lt;/a&gt;等，很多英文文档看得头大，而且代码不一定写得很好，比如&lt;a href=&quot;http://ckeditor.com/&quot; target=&quot;_blank&quot;&gt;Flexigrid&lt;/a&gt;，我找到了至少2处bug，开发中很多时间都花费在看那上千行的js脚本上了。这里介绍几款国人开发的js控件，非常好用&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;My97日期控件&lt;/strong&gt;:&lt;a href=&quot;http://www.my97.net/dp&quot;&gt;http://www.my97.net/dp&lt;/a&gt;&lt;br /&gt;
好处：可以选择时间，可以显示周，自定义格式，有多种皮肤可供选择，选择老年份非常方便：&lt;br /&gt;
&lt;img class=&quot;aligncenter&quot; title=&quot;My97日期控件选择年份&quot; src=&quot;http://www.my97.net/dp/demo/resource/pic3.jpg&quot; alt=&quot;&quot; width=&quot;180&quot; height=&quot;197&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KindEditor:&lt;/strong&gt;&lt;a href=&quot;http://www.kindsoft.net&quot; target=&quot;_blank&quot;&gt; http://www.kindsoft.net&lt;/a&gt;&lt;br /&gt;
一款可见即所得编辑器，用起来非常简单，相比CKEditor和TinyMCE要简单很多，特别是TinyMCE一大堆插件，一看头就晕了，项目开发期紧张，哪有那么多时间去看这些个插件是干嘛的哟。&lt;br /&gt;
支持两种皮肤，其中一种就是TinyMCE的皮肤，呵呵。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基于JQuery的Inline Editor插件&lt;/strong&gt;：&lt;a href=&quot;http://www.wbfsaworkstation.com.cn&quot;&gt;http://www.wbfsaworkstation.com.cn&lt;/a&gt;&lt;br /&gt;
实在是不好意思，我不知道inline这个词怎么用中文来表达，我想每个开发人员应该心里明白是啥意思吧。支持单选按钮、多选列表、文本域、软键盘等，还有评分插件以及日历插件（日历插件基于My97）&lt;/p&gt;
&lt;p&gt;如果遇到好的，会继续推荐，呵呵&amp;#8230;&lt;/p&gt;

&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753287/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753287/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753287/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753287/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2010/01/13/js_html_control/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>以前都是用国外开发的像FCKEditor（已经更名为CKEditor）、Flexigrid等，很多英文文档看得头大，而且代码不一定写得很好，比如Flexigrid，我找到了至少2处bug，开发中很多时间都花费在看那上千行的js脚本上了。这里介绍几款国人开发的js控件，非常好用
My97日期控件:http://www.my97.net/dp
好处：可以选择时间，可以显示周，自定义格式，有多种皮肤可供选择，选择老年份非常方便：

KindEditor: http://www.kindsoft.net
一款可见即所得编辑器，用起来非常简单，相比CKEditor和TinyMCE要简单很多，特别是TinyMCE一大堆插件，一看头就晕了，项目开发期紧张，哪有那么多时间去看这些个插件是干嘛的哟。
支持两种皮肤，其中一种就是TinyMCE的皮肤，呵呵。
基于JQuery的Inline Editor插件：http://www.wbfsaworkstation.com.cn
实在是不好意思，我不知道inline这个词怎么用中文来表达，我想每个开发人员应该心里明白是啥意思吧。支持单选按钮、多选列表、文本域、软键盘等，还有评分插件以及日历插件（日历插件基于My97）
如果遇到好的，会继续推荐，呵呵&amp;#8230;&lt;img src=&quot;http://www1.feedsky.com/t1/397753287/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753287/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753287/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753287/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Web开发</category><category>jsp</category><category>jquery</category><category>javascript</category><pubDate>Wed, 13 Jan 2010 23:42:31 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2010/01/13/js_html_control/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=146</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2010/01/13/js_html_control/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753287/6047504</fs:itemid></item><item><title>JSF中CommandButton与CommandLink传值</title><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753288/6047504/1/item.html</link><content:encoded>&lt;p&gt;f:param标签能够将一个参数添加到组件。需要注意的是&lt;span style=&quot;color: #0000ff;&quot;&gt;f:param标签的不同表现依赖于它所关联的组件类型&lt;/span&gt;：&lt;/p&gt;
&lt;p&gt;【1】如果为 h:outputText添加f:param标签，那么JSF实现将使用参数来填充占位符，例如{0}、{1}等。&lt;/p&gt;
&lt;p&gt;【2】如果添加f:param标签到h:commandLink，JSF实现会将参数值作为请求参数传递到服务器，如：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;h &lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;commandLink actionListener&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;#{userListBean.checkUser}&amp;quot;&lt;/span&gt; value&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;审核通过&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;f &lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;param name&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;userId&amp;quot;&lt;/span&gt; value&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;#{user.userId}&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;h&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;在服务器端可以使用如下方法来获取传递到服务器端的值：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;void&lt;/span&gt; checkUser&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003399;&quot;&gt;ActionEvent&lt;/span&gt; actionEvent&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #003399;&quot;&gt;String&lt;/span&gt; uid &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; FacesContext.&lt;span style=&quot;color: #006633;&quot;&gt;getCurrentInstance&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getExternalContext&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getRequestParameterMap&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;userId&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// other code&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;但是f:param的传值方式对于h:commandButton是没有作用的，（如果你是用搜索引擎搜到这篇文章的话，相信你肯定是遇到了这个问题），详情可以参考&lt;a href=&quot;http://www.javaeye.com/topic/93388&quot;&gt;http://www.javaeye.com/topic/93388&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果是h:commandButton，那么可以使用f:attribute来进行传值，示例如下：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;h &lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;commandButton actionListener&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;#{userListBean.resetPassword}&amp;quot;&lt;/span&gt; value&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;审核通过&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;f &lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;attribute name&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;userId&amp;quot;&lt;/span&gt; value&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;#{user.userId}&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;h&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;在服务器端可以使用如下方法来获取传递到服务器端的值：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1
2
3
4
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;java&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;void&lt;/span&gt; resetPassword&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003399;&quot;&gt;ActionEvent&lt;/span&gt; actionEvent&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;long&lt;/span&gt; userIdString &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003399;&quot;&gt;Long&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; actionEvent.&lt;span style=&quot;color: #006633;&quot;&gt;getComponent&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;getAttributes&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006633;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;quot;userId&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;//other code ……&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;div style=&quot;font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both&quot;&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/397753288/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753288/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753288/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753288/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.zhlwish.com/2009/12/31/jsf_commandbutton_commandlink/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>f:param标签能够将一个参数添加到组件。需要注意的是f:param标签的不同表现依赖于它所关联的组件类型：
【1】如果为 h:outputText添加f:param标签，那么JSF实现将使用参数来填充占位符，例如{0}、{1}等。
【2】如果添加f:param标签到h:commandLink，JSF实现会将参数值作为请求参数传递到服务器，如：

1
2
3
&amp;#60;h :commandLink actionListener=&amp;#34;#{userListBean.checkUser}&amp;#34; value=&amp;#34;审核通过&amp;#34;&amp;#62;
    &amp;#60;f :param name=&amp;#34;userId&amp;#34; value=&amp;#34;#{user.userId}&amp;#34; /&amp;#62;
&amp;#60;/h&amp;#62;

在服务器端可以使用如下方法来获取传递到服务器端的值：

1
2
3
4
private void checkUser&amp;#40;ActionEvent actionEvent&amp;#41;&amp;#123;
    String uid = FacesContext.getCurrentInstance&amp;#40;&amp;#41;.getExternalContext&amp;#40;&amp;#41;.getRequestParameterMap&amp;#40;&amp;#41;.get&amp;#40;&amp;#34;userId&amp;#34;&amp;#41;;
    // other code
&amp;#125;

但是f:param的传值方式对于h:commandButton是没有作用的，（如果你是用搜索引擎搜到这篇文章的话，相信你肯定是遇到了这个问题），详情可以参考http://www.javaeye.com/topic/93388
如果是h:commandButton，那么可以使用f:attribute来进行传值，示例如下：

1
2
3
&amp;#60;h :commandButton actionListener=&amp;#34;#{userListBean.resetPassword}&amp;#34; value=&amp;#34;审核通过&amp;#34;&amp;#62;
    &amp;#60;f :attribute name=&amp;#34;userId&amp;#34; value=&amp;#34;#{user.userId}&amp;#34;/&amp;#62;
&amp;#60;/h&amp;#62;

在服务器端可以使用如下方法来获取传递到服务器端的值：

1
2
3
4
private void resetPassword&amp;#40;ActionEvent actionEvent&amp;#41;&amp;#123;
    long userIdString = &amp;#40;Long&amp;#41; actionEvent.getComponent&amp;#40;&amp;#41;.getAttributes&amp;#40;&amp;#41;.get&amp;#40;&amp;#34;userId&amp;#34;&amp;#41;;
    //other code ……
&amp;#125;&lt;img src=&quot;http://www1.feedsky.com/t1/397753288/zhlwish/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/zhlwish/~8011581/397753288/6047504/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/zhlwish/397753288/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/zhlwish/397753288/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Web开发</category><category>JSF</category><category>web后台</category><pubDate>Thu, 31 Dec 2009 15:48:06 +0800</pubDate><author>周 亮</author><comments>http://www.zhlwish.com/2009/12/31/jsf_commandbutton_commandlink/#comments</comments><guid isPermaLink="false">http://www.zhlwish.com/?p=139</guid><dc:creator>周 亮</dc:creator><fs:srclink>http://www.zhlwish.com/2009/12/31/jsf_commandbutton_commandlink/</fs:srclink><fs:srcfeed>http://www.zhlwish.com/feed</fs:srcfeed><fs:itemid>feedsky/zhlwish/~8011581/397753288/6047504</fs:itemid></item></channel></rss>