<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Shoopman &#187; BeanUtils</title>
	<atom:link href="http://blog.shoopman.org/tag/beanutils/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.shoopman.org</link>
	<description>Shoopman&#039;s Blog</description>
	<lastBuildDate>Thu, 15 Jul 2010 08:32:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>当BeanUtils的拷贝遇上java.util.Date</title>
		<link>http://blog.shoopman.org/2009/08/16/when-beanutils-copyer-meets-java-util-date.html</link>
		<comments>http://blog.shoopman.org/2009/08/16/when-beanutils-copyer-meets-java-util-date.html#comments</comments>
		<pubDate>Sun, 16 Aug 2009 21:33:26 +0000</pubDate>
		<dc:creator>Shoopman</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BeanUtils]]></category>

		<guid isPermaLink="false">/2009/08/16/when-beanutils-copyer-meets-java-util-date.html</guid>
		<description><![CDATA[BeanUtils是apache基金会下的一个开源项目，主要用于对Java Bean的操作。在一个项目中，经常要用到Bean属性拷贝，使用了org.apache.commons.beanutils.BeanUtils.copyProperties(dest, orgi)。由于此方法声明了抛出异常，在项目中为了方便，便对此作了简单封装，把异常处理了：
public static void copy(Object dest, Object orgi) {     &#160;&#160;&#160; try {      &#160;&#160;&#160;&#160;&#160;&#160;&#160; BeanUtils.copyProperties(dest, orgi);      &#160;&#160;&#160; } catch (Exception e) {      &#160;&#160;&#160;&#160;&#160;&#160;&#160; log.error(&#34;Bean属性拷贝出错。&#34;, e);      &#160;&#160;&#160; }     [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://commons.apache.org/beanutils/" target="_blank">BeanUtils</a>是<a href="http://www.apache.org" target="_blank">apache</a>基金会下的一个开源项目，主要用于对Java Bean的操作。在一个项目中，经常要用到Bean属性拷贝，使用了org.apache.commons.beanutils.BeanUtils.copyProperties(dest, orgi)。由于此方法声明了抛出异常，在项目中为了方便，便对此作了简单封装，把异常处理了：</p>
<blockquote><p>public static void copy(Object dest, Object orgi) {     <br />&#160;&#160;&#160; try {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; BeanUtils.copyProperties(dest, orgi);      <br />&#160;&#160;&#160; } catch (Exception e) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; log.error(&quot;Bean属性拷贝出错。&quot;, e);      <br />&#160;&#160;&#160; }      <br />} </p>
</blockquote>
<p>后来却发现，当源对象orgi中某个java.util.Date类型的属性为null时，copy会失败（虽然异常被处理了），目标对象dest中部分非Date类型的属性也为空，虽然源对象中这些属性是有值。原因就是上BeanUtils在处理属性值为null的Date类型时出错了，便抛出了异常，后面的属性便不会再复制。</p>
<p>后来在JavaEye搜到了答案：为BeanUtils注册一个日期类型转换器：使用org.apache.commons.beanutils.ConvertUtils，注册org.apache.commons.beanutils.converters.DateConverter。下面的代码是放在copy方法所在的类：</p>
<blockquote><p>static{     <br />&#160;&#160;&#160; ConvertUtils.register(new DateConverter(), Date.class);      <br />} </p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.shoopman.org/2009/08/16/when-beanutils-copyer-meets-java-util-date.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
