<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>ganqing1234</title>
    <description></description>
    <link>http://ganqing1234.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Hibernate session,transaction</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/229199" style="color:red;">http://ganqing1234.javaeye.com/blog/229199</a>&nbsp;
          发表时间: 2008年08月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Hibernate中，session建立时如getCurrentSession()；不会获取数据库的链接，只有在beginTransaction()时才会从链接池里得到链接，默认情况下当事务commit或者rollback时session会flush，随后链接会被释放，新的事务会得到新的链接。<br /><br />在使用spring整合hibernate时，一般采用代理模式来管理 事务，所以在 dao里，不需要我们手动的去获取 transaction和 commit事务。例如下面的代码所示。<br /><pre name="code" class="xml">
&lt;bean id="txManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		&lt;property name="sessionFactory">
			&lt;ref local="sessionFactory" />		&lt;/property>
	&lt;/bean>

	&lt;bean id="transactionInterceptor"
		class="org.springframework.transaction.interceptor.TransactionInterceptor">
		&lt;property name="transactionManager">
			&lt;ref bean="txManager" />
		&lt;/property>
		&lt;property name="transactionAttributes">
			&lt;props>
				&lt;prop key="search*">PROPAGATION_REQUIRED,readOnly&lt;/prop>
				&lt;prop key="get*">PROPAGATION_REQUIRED,readOnly&lt;/prop>
				&lt;prop key="save*">PROPAGATION_REQUIRED,-Exception&lt;/prop>
				&lt;prop key="add*">PROPAGATION_REQUIRED,-Exception&lt;/prop>	
		
				&lt;prop key="*">PROPAGATION_REQUIRED&lt;/prop>
			&lt;/props>
		&lt;/property>
	&lt;/bean>

	&lt;!-- BeanNameAutoProxyCreator -->
	&lt;bean id="autoProxyCreator"
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		&lt;property name="interceptorNames">
			&lt;list>
				&lt;value>logInterceptor&lt;/value> 
				&lt;value>transactionInterceptor&lt;/value>
			&lt;/list>
		&lt;/property>
		&lt;!-- Add all the services to here for transaction and rollback -->
		&lt;property name="beanNames">
			&lt;list>
				&lt;!-- put in service interfaces here for transaction management -->

				&lt;idref bean="registrationService" />
			&lt;/list>
		&lt;/property>
	&lt;/bean>
</pre><br /><br />以前我一直有疑问，因为在dao里执行完某个查询操作后，session就会被关闭。这样得到的就是个detached对象，很多情况下就应该有LazyInitializationException。我一直都不明白开发架构是如何解决这个问题的。<br /><br />《java persistence with hibernate》的16章有相关的描述，一种解决方法是Open Session in View (OSIV)，这种比较好理解，就是利用filter扩展整个session，"leave the persistence context open until the view is completely rendered."。它适用于“the presentation,business,and persistence layers are colocated on the same virtual machine.” 我们所要做的就是在web.xml加上<br /><pre name="code" class="xml">
&lt;filter>
		&lt;filter-name>sessionFilter&lt;/filter-name>
		&lt;filter-class>
                      org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
		&lt;/filter-class>
	&lt;/filter> 
        &lt;filter-mapping>
		&lt;filter-name>sessionFilter&lt;/filter-name>
		&lt;url-pattern>*.faces&lt;/url-pattern>
	&lt;/filter-mapping>
</pre><br /><br />如果是分布式系统里OSIV就不行了，只得用其他的解决方法，如session facade, DTO(data transfer object) and command。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/229199#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Aug 2008 14:30:32 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/229199</link>
        <guid>http://ganqing1234.javaeye.com/blog/229199</guid>
      </item>
      <item>
        <title>&lt;a4j:outputPanel ajaxRendered=&quot;true&quot;&gt;的使用</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/215670" style="color:red;">http://ganqing1234.javaeye.com/blog/215670</a>&nbsp;
          发表时间: 2008年07月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.ajax4jsf想要显示&lt;h:message/>时，必须在&lt;h:message/>上添加&lt;a4j:outputPanel ajaxRendered="true"><br /><br />2.如果想刷新&lt;f:verbatim>里面的内容，也需要添加&lt;a4j:outputPanel ajaxRendered="true">。<br /><br />原理是像&lt;h:message>之类的组件在没有验证或转换错误时页面生成的html代码是没有它们的，所以必须在它们外面再加上一层。当然你可以用其他的如&lt;h:panelGroup>或者&lt;h:panelGrid>之类的组件来替换&lt;a4j:outputPanel>。&lt;f:verbatim>也类似，因为它里面的内容会由jsf重新生成也难以用id来定位。<br /><br />ajaxRendered="true" 属性表示页面上任何ajax触发的更新，而不仅仅是对&lt;a4j:outputPanel>的id进行reRender的ajax请求。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/215670#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Jul 2008 10:23:31 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/215670</link>
        <guid>http://ganqing1234.javaeye.com/blog/215670</guid>
      </item>
      <item>
        <title>jsf 中的 immediate 3</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/195699" style="color:red;">http://ganqing1234.javaeye.com/blog/195699</a>&nbsp;
          发表时间: 2008年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          jsf 中的 immediate 很烦阿，今天有发现它的一个特性，一般情况下在 jsf生命周期的第6步RENDER_RESPONSE，会调用get方法来完成页面的显示，而如果这个生命周期是由一个 immediate＝true 的组件引发的而且是针对同一页面的话，get方法就不会执行。利用这点终于解决了一个问题，不过这是在 portlet下的，而且是a4j的组件，不知道原生的jsf是不是一样。<br /><br />今天想想可能真的是ajax的原因。而不是jsf 中的 immediate 的特性。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/195699#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 May 2008 15:49:21 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/195699</link>
        <guid>http://ganqing1234.javaeye.com/blog/195699</guid>
      </item>
      <item>
        <title>null 的验证 和 转换</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/193689" style="color:red;">http://ganqing1234.javaeye.com/blog/193689</a>&nbsp;
          发表时间: 2008年05月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          页面 上的 输入组件 的输入值 如果是 null 时（组件的required=false），如果 组件的值是原始类型，页面自然 会出错（converter出错）。 否则 组件的值是对象类型的话，组件的验证器 不会 执行（实验中 自定义的验证器没有执行）。 就是说 在验证器里 对null的情况 是没有办法处理的。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/193689#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 15:19:27 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/193689</link>
        <guid>http://ganqing1234.javaeye.com/blog/193689</guid>
      </item>
      <item>
        <title>hibernate get 和load的区别</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/193347" style="color:red;">http://ganqing1234.javaeye.com/blog/193347</a>&nbsp;
          发表时间: 2008年05月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          hibernate中get方法和load方法的根本区别在于：如果你使用load方法，hibernate认为该id对应的对象（数据库记录）在数据库中是一定存在的，所以它可以放心的使用，它可以放心的使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库，但是万一数据库中不存在该记录，那没办法，只能抛异常，所说的load方法抛异常是指在使用该对象的数据时，数据库中不存在该数据时抛异常，而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源，所以在load时会先查一下session缓存看看该id对应的对象是否存在，不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方法来实现延迟加载。<br />对于get方法，hibernate会确认一下该id对应的数据是否存在，首先在session缓存中查找，然后在二级缓存中查找，还没有就查数据库，数据库中没有就返回null。<br /><br />对于第2点，虽然好多书中都这么说：“get()永远只返回实体类”，但实际上这是不正确的，get方法如果在session缓存中找到了该id对应的对象，如果刚好该对象前面是被代理过的，如被load方法使用过，或者被其他关联对象延迟加载过，那么返回的还是原先的代理对象，而不是实体类对象，如果该代理对象还没有加载实体数据（就是id以外的其他属性数据），那么它会查询二级缓存或者数据库来加载数据，但是返回的还是代理对象，只不过已经加载了实体数据。<br /><br />3。胡说八道，前面已经讲了，get方法首先查询session缓存，没有的话查询二级缓存，最后查询数据库；反而load方法创建时首先查询session缓存，没有就创建代理，实际使用数据时才查询二级缓存和数据库。<br /><br />总之对于get和load的根本区别，一句话，hibernate对于load方法认为该数据在数据库中一定存在，可以放心的使用代理来延迟加载，如果在使用过程中发现了问题，只能抛异常；而对于get方法，hibernate一定要获取到真实的数据，否则返回null。<br /><br />引用自http://www.javaeye.com/topic/67686
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/193347#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 17:35:58 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/193347</link>
        <guid>http://ganqing1234.javaeye.com/blog/193347</guid>
      </item>
      <item>
        <title>内部类 </title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/193346" style="color:red;">http://ganqing1234.javaeye.com/blog/193346</a>&nbsp;
          发表时间: 2008年05月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          内部类 指在另一个类内部的类，它可以继承外部类或实现接口。除非是在宿主类的非static方法里，不然创建内部类的对象必须使用 OuterClassName.InnerClassName的形式。<br /><br /><pre name="code" class="java">
    ......
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.createInnerClass();
    }
    ......
</pre><br /><br />内部类可以声明为 private 和 protected， 外部类则不可以， 它们只可能是 public 和 package。<br /><pre name="code" class="java">
class Test3 {
	private class C3 implements Contents {
		private int i;
	    public int value() {return i;}
	}
	
	protected class D3 implements Desc {
		private int i;
	    public int value() {return i;}
	}
	
	public Desc newDesc() {
		return new D3();
	}
	
	public Contents newContents() {
		return new C3();
	}
}

public class Test {

	/**
	 * @param args
	 */

	
	public static void main(String[] args) {
		Test3 test3 = new Test3();
		
		Contents c  = test3.newContents();
	}

}
</pre><br /><br />内部类还可以用于方法和作用域中。这种叫本地内部类 local inner classes，它们不能有访问控制符，因为它不属于宿主类，但它可以访问当前代码段的 finnal 变量以及宿主的所有变量。<br /><br /><pre name="code" class="java">
    ......
    void test() {
        class Test2 {
        ......
        }
        Test2 t2 = new Test2();
        ......
    }
    ......
</pre><br /><br />匿名内部类  更改上面如下： 可以看到 可以定义时初始化成员变量，但要是final类型。<br /><br /><pre name="code" class="java">
      ......
      public Contents newContents(final int j) {
		return new Contents() {
			int i = j;
			public int value() {return i;};
		};
	}
</pre><br /><br />static 的内部类称为 嵌套类, 普通的内部类都包含着其宿主类的对象。<br />它的特点是：1  无需宿主类的对象就能创建嵌套类的对象<br />          2  不能在嵌套类类里访问非static的宿主类对象。<br />普通的内部类里不能有static的成员。<br /><br />为甚么使用内部类？<br /><br />每个内部类都可以独立实现某个实现， 因此内部类不会受“宿主类是否已经继承了别的实现”的束缚。它彻底的解决了多重继承问题。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/193346#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 17:34:26 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/193346</link>
        <guid>http://ganqing1234.javaeye.com/blog/193346</guid>
      </item>
      <item>
        <title>javascript test的异常</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/183854" style="color:red;">http://ganqing1234.javaeye.com/blog/183854</a>&nbsp;
          发表时间: 2008年04月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          对一个输入框的输入进行验证，只允许字母和数字，开始是用了&lt;t:validateRegExpr pattern="[A-Za-z0-9]+" message="...".../>, 但后来由于一些原因只得用javascript进行所有的验证。<br /><br />奇怪的是用/^[\w]+$/ test时完全正确，而/[A-Za-z0-9]+$/则永远是true
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/183854#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Apr 2008 17:56:04 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/183854</link>
        <guid>http://ganqing1234.javaeye.com/blog/183854</guid>
      </item>
      <item>
        <title>jsf中的immediate</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/183844" style="color:red;">http://ganqing1234.javaeye.com/blog/183844</a>&nbsp;
          发表时间: 2008年04月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天看到一个网站上的一个有关jsf中的immediate的讨论，一般我们都会认为对于command...和inputinput...immediate的处理是不同的，但有一个人认为其实他们都是相同的，不同的是对于command来说action会提前调用（先于validator）,因为action的导航作用才使得页面跳过了后面的验证。听起来有些道理，我特地实验了一下，就是去掉action的返回值，结果证明他的观点是错误的。<br /><br />今天看core javaserver faces终于知道了原因，因为所有action，不论immediate=true 或者false，都会直接调用Render Response阶段。这么说来，那位老兄是对的。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/183844#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Apr 2008 17:40:59 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/183844</link>
        <guid>http://ganqing1234.javaeye.com/blog/183844</guid>
      </item>
      <item>
        <title>ajax4jsf中ajaxSingle的影响</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/181302" style="color:red;">http://ganqing1234.javaeye.com/blog/181302</a>&nbsp;
          发表时间: 2008年04月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          当ajaxSingle为true时，只是提交当前组件，而对于其他组件是不提交的，它的附带效果就是只对当前组件进行验证，而对其他的组件不会作任何验证。这一点上对于button和link来说感觉和immediate="true"的效果很相似，即跳过所有验证，当然只是效果除此以外它们完全是不同的。<br /><br />不知道a4j是如何实现的，因为a4j还是遵循jsf的生命周期的，所以估计会有这么一句:FacesContext.getCurrentInstance().renderResponse()，也不知到哪有源码下。<br /><br />在a4j:support中也有immediate=true 这个属性，工作流程和jsf一样。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/181302#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Apr 2008 15:19:02 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/181302</link>
        <guid>http://ganqing1234.javaeye.com/blog/181302</guid>
      </item>
      <item>
        <title>jsf中的immediate</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/180468" style="color:red;">http://ganqing1234.javaeye.com/blog/180468</a>&nbsp;
          发表时间: 2008年04月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          作为输入组件，如UInput, immediate="true"时验证会提前，不过我感觉这好像没什么用，因为本来第三步就会执行验证了,提不提早都一样。它的另外一个效果是valueChangeListener会先于第三步process validate 验证执行，这点倒是满有用的。而一般情况下valueChangeListener会在值改变并且通过验证之后即invoke applications阶段才执行，当然会先于action执行的。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/180468#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 08 Apr 2008 14:55:22 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/180468</link>
        <guid>http://ganqing1234.javaeye.com/blog/180468</guid>
      </item>
      <item>
        <title>java 接口的一些特点</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/175337" style="color:red;">http://ganqing1234.javaeye.com/blog/175337</a>&nbsp;
          发表时间: 2008年03月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1。接口中的函数都是public的，不论写不写明，所以在实现时，也必须加上public修饰。<br /><br />2。接口中可以定义变量(常量)，默认是static final型，所以必须初始化。
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/175337#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 24 Mar 2008 10:58:58 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/175337</link>
        <guid>http://ganqing1234.javaeye.com/blog/175337</guid>
      </item>
      <item>
        <title>不同浏览器的 onload兼容</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/169759" style="color:red;">http://ganqing1234.javaeye.com/blog/169759</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          firefox打开和关闭窗口时会自动的加载onload()和onunload()函数。但在IE中则不会，为使javascript能在这两个浏览器中运行。可以使用下面的方法。<br /><br /><pre name="code" class="js">
addEvent(window, 'load', winonload, false);
function addEvent(elm, evType, fn, useCapture){
    if(elm.addEventListener){
        elm.addEventListener(evType, fn, useCapture);
        return true;
    }else if (elm.attachEvent){
        var r = elm.attachEvent('on' + evType, fn);
	return r;
    }else{
        elm['on' + evType] = fn;
    }
}

function winonload() {
    ......
}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/169759#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 11:23:11 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/169759</link>
        <guid>http://ganqing1234.javaeye.com/blog/169759</guid>
      </item>
      <item>
        <title>优雅的用英语骂人</title>
        <author>ganqing1234</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://ganqing1234.javaeye.com">ganqing1234</a>&nbsp;
          链接：<a href="http://ganqing1234.javaeye.com/blog/167704" style="color:red;">http://ganqing1234.javaeye.com/blog/167704</a>&nbsp;
          发表时间: 2008年03月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          讲英语难, 吵架更难. 虽说人在国外总是想尽办法以和为贵, 但要跟人家吵架怎么办?<br />很多人一生气, 所有的英文都忘光了, 平常英文就说不出口, 更何况是吵架, 所以满脑子浮现的不是 Fxxx 就是 Sxxx 这样是很不好的. 我还听过有一个人很绝, 英文骂不过人家就用中文骂, 反正对方听得懂听不懂都无关紧要, 重要的是让他知道你很凶, 而且你正在骂他就行了. 这集还是让我们来看看一些比较文雅的骂人以及吵架的方式.<br /><br /><br />1. I'm so fed up with your BS. Cut the crap.<br />我受够了你的废话, 少说废话吧.<br /><br />美女 (美国的女人) 是不喜欢说 这个不雅的字的, 所以她们就说 shoot, 或是BS(=Bull ) 来表示她们还是很有气质的. "Cut your crap." 是当你听到对方废话连篇, 讲个不停时, 你就可以说, "Cut the crap." 相当于中文里的废话少话.<br /><br />2. Hey! wise up!<br />放聪明点好吗?<br /><br />当别人作了什么愚蠢的事时, 你可以说, "Don't be stupid" 或是 "Don't be silly."但是这是非常不礼貌的说法. 比较客气一点的说法就是, wise up! 它就相当于中文里的放聪明点. 你也可以用坚酸刻薄的语气说. Wise up, please. 然后故意把 please 的尾音拉得长长的.<br /><br />也有人会说, Hey! grow up. 意思就是你长大一点好不好? 例如有人二十岁了却还不会自己补衣服, 你就可以说 Hey! grow up. 这根 wise up 是不是也差不多呢?<br /><br />3. Put up or shut up.<br />要吗你就去做, 不然就给我闭嘴.<br /><br />有些人就是出那张嘴, 只会出意见, 此时就可以说, Put up or shut up. 要注意的是,Put up 字典上是查不到"自己去做" 的意思, 但是见怪不怪, 很多笔记本上的用法都是字典上查不到的. 比方说今天你在写程式, 有人明明不懂却喜欢在一旁指挥你, 这时候你就可以说, Put up or shut up.<br /><br />有时为了要加强 shut up 的语气, 老美会把它说成, shut the f**k up. 这句话常在二人火气很大时的对话中可以听到, 例如电影 The house on the haunted hill 女主角身陷鬼<br />屋之中, 其它人又七嘴八舌时, 她就很生气地说了一句, shut the f**k up.<br /><br />这句话也让我想到一句成语, walk the walk, talk the talk, 也就是说到就要作到,有点像是中文里知行要合一的意思, 或是只说, walk the talk 也可以.<br /><br />4. You eat with that mouth?<br />你是用这张嘴吃饭的吗?<br /><br />别人对你说脏话, 你就回敬他这一句, 言下之意, 就是你的嘴那么脏, 你还用这张嘴吃饭.还有一种说法, "You kiss your Momma with that mouth?" 就是说你也是用这脏嘴亲<br />你***吗? 所以下次记得如果有老美对你说脏话, 记得不要再 Fxxx 回去, 保持风度,说一句, "You eat with that mouth?" 就扯平了<br /><br />5. You are dead meat.<br />你死定了.<br /><br />我们说你完蛋了, 可以说 "You are dead." 或是像这样说 "You are dead meat." 意思都是一样的, 比如说你跟别人说过不淮碰我的东西, 但有人他就是老爱用你的东西, 下次要是再被你抓到, 你就可以说, "You are dead meat."<br /><br />6. Don't you dare!<br />How dare you!<br />你好大的胆子啊!<br /><br />这句话跟中文里 "你好大的胆子" 是一样, 可以在二种场合说, 第一种是很严肃的场合,比如说小孩子很调皮, 讲又讲不听, 父母就会说, "Don't you dare!" 那意思就是这个小孩要当心点, 不然等会就要挨打了. 另一种场合是开玩笑, 比如有人跟你说我跟某网友约会去了, 你说 "Don't you dare?" 就有点开玩笑的语气. (你不怕被恐龙给吃了吗?)<br /><br />Dare 在英文里还有许多有趣的用法, 例如, "You dare me." 或是 "I double dare you." 还有一种游戏叫 Truth or Dare, 限于篇幅, 容后再作介绍.<br /><br />7. Don't push me around.<br />不要摆布我.<br /><br />这个词很有意思, 把你推来推去, 作摆布解释, 如果有人指挥你一下作这个一下作那个,你就可以用这一句 Hey! Don't push me around. 通常当我讲 "Don't push me around."时, 我还会想到一个字 bossy. Bossy 就是说像是老板一样, 喜欢指挥别人. 例如,"You are so bossy. I don't like that."<br /><br />这句话也可以单讲, "Don't push me." 或是 "Don't push me any further." 还有一句根push 有关的成语, 叫 push the button, 意思就是, 指使, *纵. 例如, "I know why you are doing this, someone is pushing your button!"<br /><br />8. Are you raised in the barn?<br />你是不是乡下长大的啊?<br /><br />这句话是形容一个人没教养, 但是是比较开玩笑的语气. 比如说有人坐没坐像, 你就可以对他说这一句. Barn 原指　仓. 我翻成乡下比较能跟中文的意思结合. 老美常用barn或是backyard 来形容一个人没有教养或是没有文化, 像是那天在电视上听到一句,"No backyard language in my house." 就是说, 在我的家里不准讲粗话.<br /><br />9. You want to step outside?<br />You want to take this outside?<br />你想要外面解决吗?<br /><br />老美跟我们一样, 要是二个人一言不合吵起来了, 可能就有人要说这一句了. 指的就是要不要出去打架啦. 还有一些我听过类似的用法, 例如, "Do you want to pick a fight?"<br />你要挑起争端吗? 或是 "This means war." 这就意谓著跟我宣战.<br /><br />10. You and what army?<br />You and who else?<br />你和哪一路的人马啊?<br /><br />要是有人跟你说 "Do you want to step outside?", 就回他这一句吧. 意思是说,是喔... 那你找了多少人马要来打架啊? 有时候电视里出现这句对白的时候, 还会打出一排军队的计算机动画, 非常地有意思.<br /><br />还有一句话也很好玩, 叫 "Who's side are you on?" 这就是在快要打架时, 你问人家说,你到底是站在哪一边的?<br /><br />转自 http://english.group.javaeye.com/group/topic/2305
          <br/>
          <span style="color:red;">
            <a href="http://ganqing1234.javaeye.com/blog/167704#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Mar 2008 14:40:26 +0800</pubDate>
        <link>http://ganqing1234.javaeye.com/blog/167704</link>
        <guid>http://ganqing1234.javaeye.com/blog/167704</guid>
      </item>
  </channel>
</rss>