ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品一品,一区二区视频在线,久久综合网络一区二区http://www.aygfsteel.com/rory/category/8558.htmlHappy study,Happy work,Happy lifezh-cnTue, 27 Feb 2007 08:49:21 GMTTue, 27 Feb 2007 08:49:21 GMT60关于Hibernateçš„DetachedCriteria查询的addOrder问题的解军_Šžæ³?/title><link>http://www.aygfsteel.com/rory/archive/2006/05/29/48850.html</link><dc:creator>莫多</dc:creator><author>莫多</author><pubDate>Mon, 29 May 2006 15:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/rory/archive/2006/05/29/48850.html</guid><wfw:comment>http://www.aygfsteel.com/rory/comments/48850.html</wfw:comment><comments>http://www.aygfsteel.com/rory/archive/2006/05/29/48850.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.aygfsteel.com/rory/comments/commentRss/48850.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/rory/services/trackbacks/48850.html</trackback:ping><description><![CDATA[上篇文章:ã€?a class="singleposttitle" id="viewpost1_TitleUrl" href="/rory/archive/2006/05/21/47339.html"><font color="#223355"><strong>今天发现一个hibernateçš„bug,或者说一个应该注意的地方比较合é€?/strong></font></a> 》里面我提到äº?ji¨£n)Hibernate查询需要注意的一个问题。今天发çŽîCº†(ji¨£n)一个最好的解决办法。如果大家现在用HibernateåQŒç›¸ä¿¡å¤§å®‰™ƒ½å›žç”¨åˆ°DetachedCriteria.关于DetachedCriteria查询è¯ähŸ¥çœ?a >http://dev.yesky.com/241/2033241.shtml</a>ã€?br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) DetachedCriteria¾l™æˆ‘们的Hibernate查询带来äº?ji¨£n)很多方便,但是如果你带上排序信息就会(x¨¬)出现我的上一½‹‡æ–‡ç« é‡Œé¢è¯´çš„é‚£¿Ué”™è¯¯ï¼Œä»Šå¤©å‘现一个很好的解决æ–ÒŽ(gu¨©)³•åQŒå…¶å®žä¹Ÿå¾ˆç®€å•。就是先把传入的带Order信息的DetachedCriteriaåŽÀLމorder信息查询数据æ€ÀL¡æ•ŽÍ¼Œç„¶åŽå†æŠŠOrder加回来查询满­‘Ïx(ch¨®ng)¡ä»¶çš„对象。通过查看Hibernate的源代码发现Criteria的实现CriteriaImpl发现其实addOrder是给private List orderEntries = new ArrayList();˜q™ä¸ªList加倹{€‚这个List里面攄¡š„是OrderEntry对象。这个OrderEntry里面放了(ji¨£n)一个criteria å’?order.<br /><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> (t¨©ng)PaginationSupport (t¨©ng)findPageByCriteria(</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> (t¨©ng)DetachedCriteria (t¨©ng)detachedCriteria, (t¨©ng)</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> (t¨©ng)</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> (t¨©ng)pageSize, (t¨©ng)</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> (t¨©ng)</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> (t¨©ng)startIndex) (t¨©ng){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (t¨©ng)(PaginationSupport) (t¨©ng)getHibernateTemplate().execute(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> (t¨©ng)HibernateCallback() (t¨©ng){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> (t¨©ng)Object (t¨©ng)doInHibernate(Session (t¨©ng)session) (t¨©ng)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> (t¨©ng)HibernateException (t¨©ng){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)Criteria (t¨©ng)criteria (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)detachedCriteria.getExecutableCriteria(session);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)CriteriaImpl (t¨©ng)impl (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)(CriteriaImpl) (t¨©ng)criteria;<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)List (t¨©ng)orderEntrys (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> (t¨©ng)ArrayList();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">{<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)Field (t¨©ng)field (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)CriteriaImpl.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">.getDeclaredField(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">orderEntries</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Get (t¨©ng)orders</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)orderEntrys (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)(List) (t¨©ng)field.get(impl);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Remove (t¨©ng)orders</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)field.set(criteria,</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> (t¨©ng)ArrayList());<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception (t¨©ng)ex){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)ex.printStackTrace();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">TODO (t¨©ng)xxxx</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> (t¨©ng)totalCount (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)((Integer) (t¨©ng)criteria.setProjection(Projections.rowCount())<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng).uniqueResult()).intValue();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)criteria.setProjection(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">{<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)Field (t¨©ng)field (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)CriteriaImpl.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">.getDeclaredField(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">orderEntries</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Add (t¨©ng)orders (t¨©ng)return</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> (t¨©ng)i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; (t¨©ng)i</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">orderEntrys.size(); (t¨©ng)i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)List (t¨©ng)innerOrderEntries (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)(List) (t¨©ng)field.get(criteria);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)innerOrderEntries.add(orderEntrys.get(i));<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception (t¨©ng)ex){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)ex.printStackTrace();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">TODO (t¨©ng)cccc</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)List (t¨©ng)items (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)PaginationSupport (t¨©ng)ps (t¨©ng)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (t¨©ng)</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> (t¨©ng)PaginationSupport(items, (t¨©ng)totalCount, (t¨©ng)pageSize,<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)startIndex);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (t¨©ng)ps;<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}, (t¨©ng)</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}</span></div>希望大家多多交流<img src ="http://www.aygfsteel.com/rory/aggbug/48850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/rory/" target="_blank">莫多</a> 2006-05-29 23:29 <a href="http://www.aygfsteel.com/rory/archive/2006/05/29/48850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何¾l™webworkçš„action里的Field讄¡½®åˆå§‹å€?¾l?http://www.aygfsteel.com/rory/archive/2006/04/22/42463.html莫多莫多Sat, 22 Apr 2006 03:21:00 GMThttp://www.aygfsteel.com/rory/archive/2006/04/22/42463.htmlhttp://www.aygfsteel.com/rory/comments/42463.htmlhttp://www.aygfsteel.com/rory/archive/2006/04/22/42463.html#Feedback0http://www.aygfsteel.com/rory/comments/commentRss/42463.htmlhttp://www.aygfsteel.com/rory/services/trackbacks/42463.html如何¾l™webworkçš„action里的Field讄¡½®åˆå§‹å€?/a>

jdev说到"ä¸ÞZ»€ä¹ˆè¦æ”‘Öœ¨˜q™é‡ŒåQŒè€Œä¸æ˜¯æ”¾åˆ°ç³»¾lŸé…¾|®æ–‡ä»¶ä¸­åQŒç„¶åŽåœ¨¾pȝ»Ÿè®„¡½®ç•Œé¢ä¸­æä¾›è®¾¾|?åQŒåŽæ¥æˆ‘ž®Þq”¨spring来注入了(ji¨£n)。现在就把值放入propertiesæ–‡äšg中了(ji¨£n)ã€?br />

 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<bean (t¨©ng)id="propertyPlaceholderConfigurer" (t¨©ng)class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<property (t¨©ng)name="locations">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<list>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<value>classpath:mail.properties</value>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<value>classpath:upload.properties</value>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</list>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</property>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</bean>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<!-- (t¨©ng)收发外部邮箱 (t¨©ng)author:somebody-->
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<bean (t¨©ng)id="outMailManager" (t¨©ng)class="cn.com.fivefortunes.mail.manager.impl.OutMailManagerImpl">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<property (t¨©ng)name="javaMailSender"><ref (t¨©ng)bean="javaMailSender"/></property>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<property (t¨©ng)name="attachementDirectory"><value>${mail.attachementDirectory}</value></property>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<property (t¨©ng)name="uploadFileDirectory"><value>${upload.directory}</value></property>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<property (t¨©ng)name="outMailHibernateManager"><ref (t¨©ng)bean="outMailHibernateManager"/></property>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<property (t¨©ng)name="outMailAccountManager"><ref (t¨©ng)bean="outMailAccountManager"/></property>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</bean>
˜q™æ ·æŠŠuploadFileDirectory攑օ¥mananger中去äº?ji¨£n)。在properties里面配置一下就okäº?ji¨£n)ã€?br />

upload.directory
=D:\\tomcat5\\webapps\\files
mail.attachementDirectory
=D:\\tomcat5\\webapps\\files
上次˜q˜æœ‰¾|‘友˜q™æ ·è¯´åˆ°"return ServletActionContext.getServletContext().getRealPath("/");

ä½ è¿™æ äh¢äº?ji¨£n)部¾|²çŽ¯å¢ƒæ¯‹Æ¡éƒ½è¦æ”¹
而且也该�
D://tomcat5//webapps//files"
ä¹Ÿè®¸å¾ˆå¤šäººéƒ½ä»¥äØ“(f¨´)˜q™æ˜¯æœ€å¥½çš„æ–¹å¼åQŒå¯æ˜¯å®žé™…æƒ…å†µä¸æ˜¯è¿™æ øP¼Œæˆ‘们的uploadfile目录已经æœ?G的文ä»Óž¼Œè€ŒåŸºæœ¬ä¸Šæ¯å¤©æˆ‘们都要发布新的webappåQŒå¦‚果把uploadfile目录攑ֈ°webapp的一个子目录åQŒæ¯‹Æ¡éƒ¨¾|²çš„æ—¶å€™éƒ½è¦å…ˆæŠŠuploadfile copy出来然后再部¾|ŒÓ€‚所以我们这么做ž®±æ˜¯æŠŠupload目录攑ֈ°å…¶ä»–目录不媄(ji¨£ng)响uploadfile目录里面的文件。关于我们项目的部çÖv见我的下一½‹‡æ–‡ç« ã€‚谢谢大家。如果æ?zh¨¨n)¨æœ‰ä»€ä¹ˆæ›´å¥½çš„æ–ÒŽ(gu¨©)³•è¯äh‚¨æŒ‡æ•™ã€?img src ="http://www.aygfsteel.com/rory/aggbug/42463.html" width = "1" height = "1" />

莫多 2006-04-22 11:21 发表评论
]]>
webwork+freemarkerè½ÀL¾å®žçްRss,Atomhttp://www.aygfsteel.com/rory/archive/2006/04/10/40339.html莫多莫多Mon, 10 Apr 2006 14:40:00 GMThttp://www.aygfsteel.com/rory/archive/2006/04/10/40339.htmlhttp://www.aygfsteel.com/rory/comments/40339.htmlhttp://www.aygfsteel.com/rory/archive/2006/04/10/40339.html#Feedback0http://www.aygfsteel.com/rory/comments/commentRss/40339.htmlhttp://www.aygfsteel.com/rory/services/trackbacks/40339.html (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) 我用webwork2åQŒç”¨freemarker做模版,在网上找äº?ji¨£n)一个标准的Rss2.0格式ž®Þq”Ÿæˆæˆ‘的模版文件rss.ftl
<?xml (t¨©ng)version="1.0" (t¨©ng)encoding="UTF-8"?>
<rss (t¨©ng)version="2.0">
<channel>
<title><![CDATA[]]></title>
<link>http://leaf.jdk.cn/</link>
<description><![CDATA[泡出好心(j¨©)情,泡出好技æœ?/span>]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright (t¨©ng)2006 (t¨©ng)PaoPao (t¨©ng)v4.0]]></copyright>
<webMaster><![CDATA[rory.cn@gmail.com (t¨©ng)(Rory (t¨©ng)Ye)]]></webMaster>
<generator>PaoPao (t¨©ng)v4.0</generator> (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<image>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<title>
</title> (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<url>http://leaf.jdk.cn/logo.gif</url> (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<link>http://leaf.jdk.cn</link> (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<description>莫多泡æˆö(ch¨£ng)2006</description> (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</image>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<#list (t¨©ng)blogs (t¨©ng)as (t¨©ng)blog>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<item>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<link>http://leaf.jdk.cn/entry.action?entryId=${blog.id}</link>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<title><![CDATA[${blog.title}]]></title>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<author>${blog.authorMail}(${blog.author})</author>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<category><![CDATA[ (t¨©ng)${blog.categories} (t¨©ng)]]></category>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<pubDate>${blog.pubDate}</pubDate>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<guid>http://leaf.jdk.cn/entry.action?id=${blog.id}</guid> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<description><![CDATA[${blog.content}]]></description>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</item>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</#list>
</channel>
</rss>
我在rss.action里面åŽÕd–blogsž®±å¯ä»¥äº†(ji¨£n)ã€?br />
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)public (t¨©ng)String (t¨©ng)execute() (t¨©ng)throws (t¨©ng)Exception (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)PaginationSupport (t¨©ng)ps (t¨©ng)
= (t¨©ng)blogManager.getBlogsByPage(0);
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)blogs (t¨©ng)
= (t¨©ng)new (t¨©ng)ArrayList();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
for(Iterator (t¨©ng)ite (t¨©ng)= (t¨©ng)ps.getItems().iterator(); (t¨©ng)ite.hasNext();){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)Blog (t¨©ng)blog (t¨©ng)
= (t¨©ng)(Blog)ite.next();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)WrapRssBlog (t¨©ng)wrapBlog (t¨©ng)
= (t¨©ng)new (t¨©ng)WrapRssBlog();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)wrapBlog.setId(blog.getId());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)wrapBlog.setAuthor(blog.getAuthor().getNickname());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)wrapBlog.setAuthorMail(blog.getAuthor().getMail());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)wrapBlog.setTitle(blog.getTitle());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)wrapBlog.setContent(StringUtil.extractText(blog.getContent()));
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)wrapBlog.setPubDate(DateUtil.formatRssDate(blog.getPostTime()));
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)StringBuffer (t¨©ng)sb (t¨©ng)
= (t¨©ng)new (t¨©ng)StringBuffer();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
for(Iterator (t¨©ng)ite2 (t¨©ng)= (t¨©ng)blog.getCategories().iterator(); (t¨©ng)ite2.hasNext();){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)Category (t¨©ng)cate (t¨©ng)
= (t¨©ng)(Category) (t¨©ng)ite2.next();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)sb.append(
" (t¨©ng)")
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng).append(cate.getName());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)wrapBlog.setCategories(sb.toString());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)blogs.add(wrapBlog);
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
return (t¨©ng)super.execute();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
˜q™é‡ŒæŠŠblog包装äº?ji¨£n)一下,主要是处理了(ji¨£n)一下日期,内容åQŒè¿˜æœ‰æŠŠåˆ†ç±»æ‹¼æˆå­—符丌Ӏ‚关于日期的处理åQŒå‚考了(ji¨£n)飞云ž®ä¾ å†™çš„rss日期的研½I¶ã€‚实çŽîC»£ç å¦‚下ã€?br />
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)public (t¨©ng)static (t¨©ng)String (t¨©ng)formatRssDate(Date (t¨©ng)date){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)SimpleDateFormat (t¨©ng)sdf (t¨©ng)
= (t¨©ng)new (t¨©ng)SimpleDateFormat("EEE, (t¨©ng)d (t¨©ng)MMM (t¨©ng)yyyy (t¨©ng)HH:mm:ss (t¨©ng)z",Locale.US);
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
//TODO (t¨©ng)TimeZone
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)SimpleTimeZone (t¨©ng)zone (t¨©ng)= (t¨©ng)new (t¨©ng)SimpleTimeZone(8,"GMT");
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)sdf.setTimeZone(zone);
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
return (t¨©ng)sdf.format(date);
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
˜q™æ ·ž®±å¾—åˆîCº†(ji¨£n)˜q™æ ·çš„æ—¥æœ?br />Thu, 6 Apr 2006 16:01:36 GMT
做好äº?ji¨£n)这些,配置一下action
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<action (t¨©ng)name="rss" (t¨©ng)class="cn.jdk.leaf.action.RssAction"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<result (t¨©ng)name="success" (t¨©ng)type="freemarker">/WEB-INF/pages/rss.ftl</result>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</action>
不过像这样配¾|®çš„话,你访é—?a >http://xxx.xxx.com/rss.action看到的不是一个xml
因䨓(f¨´)˜q”回¾l“果的contentType是text/html.而不是xmlåQŒè¿™æ äh˜¯ä¸è¡Œçš„。看äº?ji¨£n)一下webwork源码。原来可以这æ ïL(f¨¥ng)®€å•的解决。改成这样配¾|®å°±å¯ä»¥äº?ji¨£n)ã€?br />
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)<action (t¨©ng)name="rss" (t¨©ng)class="cn.jdk.leaf.action.RssAction">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<result (t¨©ng)name="success" (t¨©ng)type="freemarker">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<param (t¨©ng)name="location">/WEB-INF/pages/rss.ftl</param>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
<param (t¨©ng)name="contentType">application/xml</param>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</result>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
</action>

½Ž€å•吧。其实你˜q˜å¯ä»¥æŠŠ˜q™ä¸ªcontentTypeæ”ÒŽ(gu¨©)ˆå…¶ä»–¾cÕdž‹çš„。比如excle的。这æ ïL(f¨¥ng)”¨æˆäh‰§è¡Œå°±å¯ä»¥å¾—到一个xlsæ–‡äšg。哈哈ã€?img src ="http://www.aygfsteel.com/rory/aggbug/40339.html" width = "1" height = "1" />

莫多 2006-04-10 22:40 发表评论
]]>
interceptor和ognlvaluestackhttp://www.aygfsteel.com/rory/archive/2006/03/21/36591.html莫多莫多Tue, 21 Mar 2006 03:37:00 GMThttp://www.aygfsteel.com/rory/archive/2006/03/21/36591.htmlhttp://www.aygfsteel.com/rory/comments/36591.htmlhttp://www.aygfsteel.com/rory/archive/2006/03/21/36591.html#Feedback0http://www.aygfsteel.com/rory/comments/commentRss/36591.htmlhttp://www.aygfsteel.com/rory/services/trackbacks/36591.html
今天½Hå‘奇想的实çŽîC¸€ä¸ªå°ž®çš„cache。把分类categories攑օ¥map中,cacheèµäh¥ã€?br />
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)private (t¨©ng)void (t¨©ng)cache() (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
if(log.isDebugEnabled()){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)log.debug(
"Starting (t¨©ng)cache (t¨©ng)the (t¨©ng)categories");
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)cacheCategoryMap (t¨©ng)
= (t¨©ng)new (t¨©ng)HashMap();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)cacheCategoryMap.put(
"categories",categoryDao.getCategories());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}

然后我想在interceptor里面把categories写到ognlvaluestack里面˜q™æ ·æˆ‘在ftl里面ž®±å¯ä»?lt;#list categories>....</#list>äº?ji¨£n)ã€‚å› ä¸ø™¿™ä¸ªæ˜¯åœ¨æ¯ä¸ªé¡µé¢çš„header.ftl里面的。我也就不需要再每个action里面去get一下了(ji¨£n)ã€?br />刚开始我implements Interceptor

 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)final (t¨©ng)OgnlValueStack (t¨©ng)stack (t¨©ng)= (t¨©ng)ActionContext.getContext().getValueStack();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)stack.setValue(
"categories" (t¨©ng),categoryManager.getCategories());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
return (t¨©ng)invocation.invoke();
可是˜q™æ ·ä¹Ÿä¸å¯ä»¥ã€‚后来我惛_ˆ°æ˜¯ä¸æ˜¯action执行完毕之后ž®±æŠŠstack中的˜q™ä¸ªå€¼æ¸…½IÞZº†(ji¨£n)我又用了(ji¨£n)。AroundInterceptor 我想在after里面去设¾|®ä¸ž®±å¯ä»¥äº†(ji¨£n)ã€?br />
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)protected (t¨©ng)void (t¨©ng)after(ActionInvocation (t¨©ng)dispatcher, (t¨©ng)String (t¨©ng)result) (t¨©ng)throws (t¨©ng)Exception (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
final (t¨©ng)OgnlValueStack (t¨©ng)stack (t¨©ng)= (t¨©ng)ActionContext.getContext().getValueStack();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)stack.setValue(
"categories" (t¨©ng),categoryManager.getCategories());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}
可是˜q™æ ·˜q˜æ˜¯ä¸å¯ä»¥ã€‚我晕了(ji¨£n)。我æƒÏx(ch¨®ng)˜¯ä¸æ˜¯è¦åœ¨action里面声明一下categoriesã€?br />
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)private (t¨©ng)List (t¨©ng)categories;

 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
public (t¨©ng)List (t¨©ng)getCategories() (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
return (t¨©ng)categories;
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}


 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
public (t¨©ng)void (t¨©ng)setCategories(List (t¨©ng)categories) (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
this.categories (t¨©ng)= (t¨©ng)categories;
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}

然后在before里面去getž®±å¯ä»¥äº†(ji¨£n)ã€?br />
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)protected (t¨©ng)void (t¨©ng)before(ActionInvocation (t¨©ng)invocation) (t¨©ng)throws (t¨©ng)Exception (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)
final (t¨©ng)OgnlValueStack (t¨©ng)stack (t¨©ng)= (t¨©ng)ActionContext.getContext().getValueStack();
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)stack.setValue(
"categories" (t¨©ng),categoryManager.getCategories());
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng)}

æ€È®—实现äº?ji¨£n)。不˜q‡è¿˜è¦åœ¨æ¯ä¸ªaction里面声明一下categoriesåQŒè¿™æ ¯‚¿˜æ˜¯å¾ˆä¸å¥½çš„。刚才有人徏议用filter。我在试试吧.


http://leaf.jdk.cn/index.php/archives/91

莫多 2006-03-21 11:37 发表评论
]]>
如何¾l™webworkçš„action里的Field讄¡½®åˆå§‹å€?/title><link>http://www.aygfsteel.com/rory/archive/2006/03/16/35656.html</link><dc:creator>莫多</dc:creator><author>莫多</author><pubDate>Thu, 16 Mar 2006 07:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/rory/archive/2006/03/16/35656.html</guid><wfw:comment>http://www.aygfsteel.com/rory/comments/35656.html</wfw:comment><comments>http://www.aygfsteel.com/rory/archive/2006/03/16/35656.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/rory/comments/commentRss/35656.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/rory/services/trackbacks/35656.html</trackback:ping><description><![CDATA[前两天在做javamail的时候发现原来的上传的action把上传文件的路径写在action里面äº?ji¨£n)。那个目录是服务器上的地址åQŒçœŸbad smell。我ž®±æƒ³æŠŠå®ƒæ”ÒŽ(gu¨©)ˆå¯ä»¥é…ç½®çš„。我¾l™uploadactionæ·ÕdŠ äº?ji¨£n)一个string 的字ŒDµuploadDirectory。在action的配¾|®æ–‡ä»‰™‡Œé¢ç»™è®„¡½®äº?ji¨£n)初始倹{€?BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #000000">        </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">action </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="fileupload"</SPAN><SPAN style="COLOR: #ff0000"> class</SPAN><SPAN style="COLOR: #0000ff">="cn.com.fivefortunes.upload.FileUpload"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">param </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="uploadDirectory"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">D:\tomcat5\webapps\files</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">param</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff"><!</SPAN><SPAN style="COLOR: #ff00ff">–D:\temp â€?/SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">result </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="success"</SPAN><SPAN style="COLOR: #ff0000"> type</SPAN><SPAN style="COLOR: #0000ff">="freemarker"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">/upload/upload.ftl</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">result</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">interceptor-ref </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="fileUpload"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">interceptor-ref </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="params"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>        </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">action</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV><BR>可是˜q™æ ·æˆ‘还是不可以debug的时候发现uploadDirectory是null。不知道怎么回事情了(ji¨£n)。就åˆ?A >http://wiki.opensymphony.com </A>来searchäº?ji¨£n)一下,没想到真有ã€?BR><A ><STRONG><span id="wmqeeuq" class=pagetitle style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-DECORATION: none">How do I get static parameters into my action</SPAN></STRONG></A><BR>˜q™ä¸ªž®±æ˜¯æˆ‘的问题。原来是要加上一个inteceptorã€?BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">action </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="fileupload"</SPAN><SPAN style="COLOR: #ff0000"> class</SPAN><SPAN style="COLOR: #0000ff">="cn.com.fivefortunes.upload.FileUpload"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">param </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="uploadDirectory"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">D:\tomcat5\webapps\files</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">param</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #0000ff"><!</SPAN><SPAN style="COLOR: #ff00ff">â€?nbsp;D:\temp â€?/SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">result </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="success"</SPAN><SPAN style="COLOR: #ff0000"> type</SPAN><SPAN style="COLOR: #0000ff">="freemarker"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">/upload/upload.ftl</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">result</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">interceptor-ref </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="fileUpload"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">interceptor-ref </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="params"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>            </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">interceptor-ref </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="static-params"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR>        </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">action</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV><BR>˜q™æ ·ž®±å¯ä»¥äº†(ji¨£n)。不˜q‡è¿˜æ˜¯è§‰å¾—不怎么爽。发布的时候还是要记得修改那个xwork的配¾|®æ–‡ä»¶ã€?img src ="http://www.aygfsteel.com/rory/aggbug/35656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/rory/" target="_blank">莫多</a> 2006-03-16 15:26 <a href="http://www.aygfsteel.com/rory/archive/2006/03/16/35656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">̨ɽÊÐ</a>| <a href="http://" target="_blank">×ÊÏªÏØ</a>| <a href="http://" target="_blank">³ç×óÊÐ</a>| <a href="http://" target="_blank">½ðËþÏØ</a>| <a href="http://" target="_blank">μÄÏÊÐ</a>| <a href="http://" target="_blank">±¦Ó¦ÏØ</a>| <a href="http://" target="_blank">ºÎ÷ÊÐ</a>| <a href="http://" target="_blank">×ÏÔÆ</a>| <a href="http://" target="_blank">Ê¯Â¥ÏØ</a>| <a href="http://" target="_blank">ÑÓ¼ªÊÐ</a>| <a href="http://" target="_blank">ɳºÓÊÐ</a>| <a href="http://" target="_blank">Äþ¹úÊÐ</a>| <a href="http://" target="_blank">º£ÃÅÊÐ</a>| <a href="http://" target="_blank">°¢Â³¿Æ¶ûÇ߯ì</a>| <a href="http://" target="_blank">ÃϽòÏØ</a>| <a href="http://" target="_blank">»á²ýÏØ</a>| <a href="http://" target="_blank">ËÉÑôÏØ</a>| <a href="http://" target="_blank">³ÐµÂÏØ</a>| <a href="http://" target="_blank">Û·ÉÆÏØ</a>| <a href="http://" target="_blank">ÄÏľÁÖÏØ</a>| <a href="http://" target="_blank">ÄÏÐÛÊÐ</a>| <a href="http://" target="_blank">ÁéèµÏØ</a>| <a href="http://" target="_blank">°½ººÆì</a>| <a href="http://" target="_blank">ãäÁêÏØ</a>| <a href="http://" target="_blank">ÖÛɽÊÐ</a>| <a href="http://" target="_blank">¾®ÑÐÏØ</a>| <a href="http://" target="_blank">ÕÐÔ¶ÊÐ</a>| <a href="http://" target="_blank">Éç»á</a>| <a href="http://" target="_blank">µ¤½­¿ÚÊÐ</a>| <a href="http://" target="_blank">ÍпËÍÐÏØ</a>| <a href="http://" target="_blank">³µÏÕ</a>| <a href="http://" target="_blank">ÁúȪÊÐ</a>| <a href="http://" target="_blank">ÈÊ»¯ÏØ</a>| <a href="http://" target="_blank">ÆÑ³ÇÏØ</a>| <a href="http://" target="_blank">ÆåÅÆ</a>| <a href="http://" target="_blank">¬ÍåÇø</a>| <a href="http://" target="_blank">ÄáÄ¾ÏØ</a>| <a href="http://" target="_blank">³Ê¹±ÏØ</a>| <a href="http://" target="_blank">̨ÄÏÏØ</a>| <a href="http://" target="_blank">»ëÔ´ÏØ</a>| <a href="http://" target="_blank">ÎÐÑôÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>