??xml version="1.0" encoding="utf-8" standalone="yes"?>国产综合成人亚洲区,亚洲中文字幕无码中文字,2020久久精品亚洲热综合一本http://www.tkk7.com/wjywilliam/Consciousness Of Programming - wjywilliam 想飞QL会飞?..... zh-cnSun, 11 May 2025 00:09:26 GMTSun, 11 May 2025 00:09:26 GMT60软g试遇到的情?/title><link>http://www.tkk7.com/wjywilliam/archive/2014/11/03/419428.html</link><dc:creator>wjywilliam</dc:creator><author>wjywilliam</author><pubDate>Mon, 03 Nov 2014 01:58:00 GMT</pubDate><guid>http://www.tkk7.com/wjywilliam/archive/2014/11/03/419428.html</guid><wfw:comment>http://www.tkk7.com/wjywilliam/comments/419428.html</wfw:comment><comments>http://www.tkk7.com/wjywilliam/archive/2014/11/03/419428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wjywilliam/comments/commentRss/419428.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wjywilliam/services/trackbacks/419428.html</trackback:ping><description><![CDATA[<div>在Y仉目的试q程中,我们往往会遇C下的一些情况,是开发组和测试组无法紧密协调合作的情况,我ȝ了以下几条比较常见的Q?/div><div><br />A E序员一般情况下犯错的原?/div><div>  1.E序员粗心大?本应该不出现错误Q例如表现性错?</div><div>  2.E序员需求理解错?nbsp;</div><div>  3.E序员程序考虑不周Q程序设计不够严? </div><div></div><div><br />B 试员一般情况下D误报Bug的原?/div><div>  1.试人员需求理解错?业务功能理解错误) </div><div>  2.试人员常规理解错误(本是正常现象Q以为是错误Q常指误解业界常规实现方法等) </div><div>  3.试人员试功能旉范围不合规定(功能未完成已q行试提BugQ或未按照某一旉D规定进行测? </div><div>  4.需求功能点描述含糊不清具备争议性,或需求功能点没提及,但测试h员按照自q解提出Bug </div><div></div><div><br />C 非程序错误下Q导致测试出现问题的原因</div><div>  1.pȝq行环境问题 </div><div>  2.E序扚w没有配合试 </div><div>  3.试人员试时候,数据存在垃圾数据D出错  </div><div></div><img src ="http://www.tkk7.com/wjywilliam/aggbug/419428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wjywilliam/" target="_blank">wjywilliam</a> 2014-11-03 09:58 <a href="http://www.tkk7.com/wjywilliam/archive/2014/11/03/419428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>E序员眼中的《盗梦空间?- 转蝲http://www.tkk7.com/wjywilliam/archive/2010/10/04/333719.htmlwjywilliamwjywilliamMon, 04 Oct 2010 02:08:00 GMThttp://www.tkk7.com/wjywilliam/archive/2010/10/04/333719.htmlhttp://www.tkk7.com/wjywilliam/comments/333719.htmlhttp://www.tkk7.com/wjywilliam/archive/2010/10/04/333719.html#Feedback0http://www.tkk7.com/wjywilliam/comments/commentRss/333719.htmlhttp://www.tkk7.com/wjywilliam/services/trackbacks/333719.html

来觉得《盗梦空间》是l程序员们拍的了。那么进入一层梦境到底怎么映射到编E?是递归Q是循环Q还是简单的函数调用Q?/p>

  对于一个进入梦境中的h来说是递归Q一层层pushq了再一层层pop出来Q对于很多进入梦境中的h来说Q是函数调用Q因为停在某一层梦境中的h与其他进入更深梦境中的h是同时工作的。更加确切的_q入梦境中的人算是程序中讑֮的全局变量Q梦境中虚拟出来的h是局部变量,而一个程序中一般不会只有一个全局变量Q所以进入梦境不是递归操作而是函数调用了。每一个虚拟出来的梦境都是一个函敎ͼ可以׃Q何其他梦境Q何时候调用(q入Q,q入此函敎ͼ梦境Q的变量QhQ,一般还是要q回的,是函数q回的参CQ此变量q回时作Zhq没有M变化Q比如CobblAriadne在梦境中注入了一个思想Q那么Ariadne作ؓ变量q回时就是经q处理的了。一般来说编E中函数最好是q回参数的,要么是直接处理后得到的最l|要么是得到的一个标志变量,但也可以不返回参敎ͼ也就是void型的Q对应到电媄中就是:q入此梦境中的h可以q回Q可以不q回Q永q留在梦境中?/p>

  Z么进入一个梦境中比前一个梦境(或许是现实)旉要变慢了Q或许可以这么理解:如果我们把现实世界看作主函数Qmain函数Q的话,那么我们一般不喜欢在一条主U中写太长的代码Q那么我们希望写一个函数来调用Q写好函C后,在此程中直接写一个函数调用语句就行了Q具体的q程q此函数来完成Q我们默认允许此函数用长一些的旉d成逻辑功能Q当然很多情况下处理旉短好?/p>

  q入梦境的时候会选择q入谁的梦境Q被选定的这个h在程序中对应一个最主要的变量,q个人在梦境中如果被杀掉,对应此函数中的主要变量有问题,不符合此函数Q梦境)Ҏ变量QhQ的要求。此时就要throw exceptionq且return回到上层梦境Q函敎ͼ?/p>

  设计梦境的h是~写此程序的E序员。此Z可以q入他设计的梦境Q而程序员面对自己的程序也要不断深入,因ؓ要找各种bug.如果此程序员留在了梦境中没有出来Q我们可以这L解,q个E序员出了问题或者说q个E序员写的程序出了问题。所以说选择一个好的造梦师(E序员)臛_重要Q所以cobb才会回到巴黎找他老师Q也是父Ԍ没太弄清楚)要一个很聪明的学生,q把她培L一个优U的造梦师。cobb作ؓ一个造梦师,自n条g是很好的Q可是有一个致命的~点QL抛不掉自pȝ或是生活中或是梦境中做的不好的场景,q且q些场景会经常出现在新的梦境中。对应地Q一个程序员Q如果L沿用自己q去写过的程序,那些代码D自׃前写的时候或出现了问题或者问题没有表现出来,但是在新的要求下q不W合要求了,或者写新的E序时候L沿用自己q去的编E思想Q或讔R些思想q不适用于新的情c所以一个程序员很重要的一Ҏ要打破自q惯性思维Q遇到问题即使跟以前遇到q的很像也要仔细地重新审视。打破常规,发散思维Q这样一个程序员才会有长的发展?/p>

  作者:alexzhanQ作者电子邮Ӟalexzhan12@gmail.com Q欢q来信交?br />
    转蝲?a style="COLOR: rgb(78,10,19); TEXT-DECORATION: underline" >月光博客 [ http://www.williamlong.info/ ] 



wjywilliam 2010-10-04 10:08 发表评论
]]>
Reflct反射机制一些基本用?/title><link>http://www.tkk7.com/wjywilliam/archive/2009/02/10/254041.html</link><dc:creator>wjywilliam</dc:creator><author>wjywilliam</author><pubDate>Tue, 10 Feb 2009 06:40:00 GMT</pubDate><guid>http://www.tkk7.com/wjywilliam/archive/2009/02/10/254041.html</guid><wfw:comment>http://www.tkk7.com/wjywilliam/comments/254041.html</wfw:comment><comments>http://www.tkk7.com/wjywilliam/archive/2009/02/10/254041.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.tkk7.com/wjywilliam/comments/commentRss/254041.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wjywilliam/services/trackbacks/254041.html</trackback:ping><description><![CDATA[ <span style="COLOR: red"> <span style="FONT-SIZE: 14pt"> <span style="COLOR: red">PSQ若转蝲发布此文章或相关代码Q请注明出处Q谢?/span> </span> </span> <br />最q用Creflct机制Q此前ƈ不熟悉,此Z留个底,怕忘CQ只是些应用而已?br /><br />1. 动态匹配方法名字赋?br />需求:<br />一个tempLoan bean里面有几个属?setPsAddr11QsetPsAddr12QsetPsAddr13Q但是从DB里面取出来的只有一个psAddr1 field|值是<br />“A~B~C”的l构。需要分别把值A赋到psAddr11QB赋到psAddr12QC赋到psAddr13?br />Z以免后面再增加属性例?Q?Q?之类的,不采取手工硬塞动作,故此采取反射Q统一逻辑处理?br />如下代码Q?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: #008080">1</span><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">Class tempLoanClass </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> tempLoan.getClass();<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img id="Codehighlighter1_90_519_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_519_Open_Text.style.display='none'; Codehighlighter1_90_519_Closed_Image.style.display='inline'; Codehighlighter1_90_519_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_90_519_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_90_519_Closed_Text.style.display='none'; Codehighlighter1_90_519_Open_Image.style.display='inline'; Codehighlighter1_90_519_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(tempLoan.getPsAddr1()</span><span style="COLOR: #000000">!=</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_90_519_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_90_519_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                    List</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">String</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> psAddress1List </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Arrays.asList(tempLoan.getPsAddr1().split(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img id="Codehighlighter1_259_497_Open_Image" onclick="this.style.display='none'; Codehighlighter1_259_497_Open_Text.style.display='none'; Codehighlighter1_259_497_Closed_Image.style.display='inline'; Codehighlighter1_259_497_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_259_497_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_259_497_Closed_Text.style.display='none'; Codehighlighter1_259_497_Open_Image.style.display='inline'; Codehighlighter1_259_497_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; x </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> psAddress1List.size(); x</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_259_497_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_259_497_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img id="Codehighlighter1_369_384_Open_Image" onclick="this.style.display='none'; Codehighlighter1_369_384_Open_Text.style.display='none'; Codehighlighter1_369_384_Closed_Image.style.display='inline'; Codehighlighter1_369_384_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_369_384_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_369_384_Closed_Text.style.display='none'; Codehighlighter1_369_384_Open_Image.style.display='inline'; Codehighlighter1_369_384_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                        Method method </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> tempLoanClass.getDeclaredMethod(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">setPsAddr1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> (x </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">), </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Class[] </span><span id="Codehighlighter1_369_384_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_369_384_Open_Text"><span style="COLOR: #000000">{ String.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> }</span></span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img id="Codehighlighter1_449_473_Open_Image" onclick="this.style.display='none'; Codehighlighter1_449_473_Open_Text.style.display='none'; Codehighlighter1_449_473_Closed_Image.style.display='inline'; Codehighlighter1_449_473_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_449_473_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_449_473_Closed_Text.style.display='none'; Codehighlighter1_449_473_Open_Image.style.display='inline'; Codehighlighter1_449_473_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                        method.invoke(tempLoan, </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Object[] </span><span id="Codehighlighter1_449_473_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_449_473_Open_Text"><span style="COLOR: #000000">{ psAddress1List.get(x) }</span></span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="COLOR: #000000">    <br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />                }</span></span></div>如上用loop来映set的方法,由对应的getҎ取出来list的元素的|按照序动态赋ltempLoan 的setҎ?<br /><br />2. Ҏ参数对应Bean里面的变量名Q把Bean内所对应的变量的Dl另一个变?br />需求:<br />Ҏ传入参数一个变量名和一个BOQ匹配BO里面的属性,若与传入变量名的值相同,则取BO对应属性的D于另一变量<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: #008080"> 1</span><img id="Codehighlighter1_92_811_Open_Image" onclick="this.style.display='none'; Codehighlighter1_92_811_Open_Text.style.display='none'; Codehighlighter1_92_811_Closed_Image.style.display='inline'; Codehighlighter1_92_811_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_92_811_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_811_Closed_Text.style.display='none'; Codehighlighter1_92_811_Open_Image.style.display='inline'; Codehighlighter1_92_811_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setValueInField(Loan loan, String fieldName, String fieldValue) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception</span><span id="Codehighlighter1_92_811_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_92_811_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_105_743_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_743_Open_Text.style.display='none'; Codehighlighter1_105_743_Closed_Image.style.display='inline'; Codehighlighter1_105_743_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_105_743_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_105_743_Closed_Text.style.display='none'; Codehighlighter1_105_743_Open_Image.style.display='inline'; Codehighlighter1_105_743_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">try</span><span id="Codehighlighter1_105_743_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_105_743_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            Class tempLoanClass </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> loan.getClass();<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            Method[] methods </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> tempLoanClass.getMethods();<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img id="Codehighlighter1_264_733_Open_Image" onclick="this.style.display='none'; Codehighlighter1_264_733_Open_Text.style.display='none'; Codehighlighter1_264_733_Closed_Image.style.display='inline'; Codehighlighter1_264_733_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_264_733_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_264_733_Closed_Text.style.display='none'; Codehighlighter1_264_733_Open_Image.style.display='inline'; Codehighlighter1_264_733_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> x</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; x</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">methods.length; x</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_264_733_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_264_733_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                String methodName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> methods[x].getName();<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img id="Codehighlighter1_372_719_Open_Image" onclick="this.style.display='none'; Codehighlighter1_372_719_Open_Text.style.display='none'; Codehighlighter1_372_719_Closed_Image.style.display='inline'; Codehighlighter1_372_719_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_372_719_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_372_719_Closed_Text.style.display='none'; Codehighlighter1_372_719_Open_Image.style.display='inline'; Codehighlighter1_372_719_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(methodName.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">get</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">>-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_372_719_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_372_719_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img id="Codehighlighter1_470_701_Open_Image" onclick="this.style.display='none'; Codehighlighter1_470_701_Open_Text.style.display='none'; Codehighlighter1_470_701_Closed_Image.style.display='inline'; Codehighlighter1_470_701_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_470_701_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_470_701_Closed_Text.style.display='none'; Codehighlighter1_470_701_Open_Image.style.display='inline'; Codehighlighter1_470_701_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(methodName.substring(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">, methodName.length()).equalsIgnoreCase(fieldName))</span><span id="Codehighlighter1_470_701_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_470_701_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img id="Codehighlighter1_548_549_Open_Image" onclick="this.style.display='none'; Codehighlighter1_548_549_Open_Text.style.display='none'; Codehighlighter1_548_549_Closed_Image.style.display='inline'; Codehighlighter1_548_549_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_548_549_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_548_549_Closed_Text.style.display='none'; Codehighlighter1_548_549_Open_Image.style.display='inline'; Codehighlighter1_548_549_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                        Object value </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> methods[x].invoke(loan, </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Object[] </span><span id="Codehighlighter1_548_549_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_548_549_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id="Codehighlighter1_594_679_Open_Image" onclick="this.style.display='none'; Codehighlighter1_594_679_Open_Text.style.display='none'; Codehighlighter1_594_679_Closed_Image.style.display='inline'; Codehighlighter1_594_679_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_594_679_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_594_679_Closed_Text.style.display='none'; Codehighlighter1_594_679_Open_Image.style.display='inline'; Codehighlighter1_594_679_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(value </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_594_679_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_594_679_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                            fieldValue </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> value.toString();<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id="Codehighlighter1_762_805_Open_Image" onclick="this.style.display='none'; Codehighlighter1_762_805_Open_Text.style.display='none'; Codehighlighter1_762_805_Closed_Image.style.display='inline'; Codehighlighter1_762_805_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_762_805_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_762_805_Closed_Text.style.display='none'; Codehighlighter1_762_805_Open_Image.style.display='inline'; Codehighlighter1_762_805_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception e)</span><span id="Codehighlighter1_762_805_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_762_805_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div><br />3. q个比较d了,是列出一个Class所有的全局变量?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Retrieve global variable object in class</span><span style="COLOR: #008000"><br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">   Object obj </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Mytest();<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        Field[] fields </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> obj.getClass().getDeclaredFields();<br /><img id="Codehighlighter1_194_753_Open_Image" onclick="this.style.display='none'; Codehighlighter1_194_753_Open_Text.style.display='none'; Codehighlighter1_194_753_Closed_Image.style.display='inline'; Codehighlighter1_194_753_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_194_753_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_194_753_Closed_Text.style.display='none'; Codehighlighter1_194_753_Open_Image.style.display='inline'; Codehighlighter1_194_753_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> fields.length; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> len; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_194_753_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_194_753_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            String varName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> fields[i].getName();<br /><img id="Codehighlighter1_262_565_Open_Image" onclick="this.style.display='none'; Codehighlighter1_262_565_Open_Text.style.display='none'; Codehighlighter1_262_565_Closed_Image.style.display='inline'; Codehighlighter1_262_565_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_262_565_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_262_565_Closed_Text.style.display='none'; Codehighlighter1_262_565_Open_Image.style.display='inline'; Codehighlighter1_262_565_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_262_565_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_262_565_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> accessFlag </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> fields[i].isAccessible();<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                fields[i].setAccessible(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                Object o </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> fields[i].get(obj);<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Include variableQ?/span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> varName </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> = </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> o);<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                fields[i].setAccessible(accessFlag);<br /><img id="Codehighlighter1_603_655_Open_Image" onclick="this.style.display='none'; Codehighlighter1_603_655_Open_Text.style.display='none'; Codehighlighter1_603_655_Closed_Image.style.display='inline'; Codehighlighter1_603_655_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_603_655_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_603_655_Closed_Text.style.display='none'; Codehighlighter1_603_655_Open_Image.style.display='inline'; Codehighlighter1_603_655_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IllegalArgumentException ex) </span><span id="Codehighlighter1_603_655_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_603_655_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                ex.printStackTrace();<br /><img id="Codehighlighter1_691_743_Open_Image" onclick="this.style.display='none'; Codehighlighter1_691_743_Open_Text.style.display='none'; Codehighlighter1_691_743_Closed_Image.style.display='inline'; Codehighlighter1_691_743_Closed_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_691_743_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_691_743_Closed_Text.style.display='none'; Codehighlighter1_691_743_Open_Image.style.display='inline'; Codehighlighter1_691_743_Open_Text.style.display='inline';" alt="" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IllegalAccessException ex) </span><span id="Codehighlighter1_691_743_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_691_743_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                ex.printStackTrace();<br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span></span></div><br /><br /><span style="COLOR: red"> </span><img src ="http://www.tkk7.com/wjywilliam/aggbug/254041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wjywilliam/" target="_blank">wjywilliam</a> 2009-02-10 14:40 <a href="http://www.tkk7.com/wjywilliam/archive/2009/02/10/254041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2: Jdk1.5 + Tomcat 5.0.28环境下运行Struts2的项目报错及解决Ҏhttp://www.tkk7.com/wjywilliam/archive/2008/04/27/196637.htmlwjywilliamwjywilliamSun, 27 Apr 2008 13:26:00 GMThttp://www.tkk7.com/wjywilliam/archive/2008/04/27/196637.htmlhttp://www.tkk7.com/wjywilliam/comments/196637.htmlhttp://www.tkk7.com/wjywilliam/archive/2008/04/27/196637.html#Feedback0http://www.tkk7.com/wjywilliam/comments/commentRss/196637.htmlhttp://www.tkk7.com/wjywilliam/services/trackbacks/196637.html场景Q运行运用了Struts2.0 framework的项目时发生的错误?br />
环境Q?/strong>sun jdk1.5.0_15 + tomcat 5.0.28


原本以ؓ自己玩了eclipse和myeclipseq么多年Q一向项目的配置发布用myeclipse虽然没有驾轻qQ但是至不会被NQ这ơ确倒在了这个jdk 1.5及tomcat 5.0.28的环境上。谁叫以前一直没有试q在tomcat5.0.28上发布struts2呢,刚好现在客户说一定要用struts2Q刚好自׃惛_偿新Q却偿到了这个苦头。开始还以ؓ是自qmyelipse deploy的问题,l果却不是,为啥别h的tomcat5.5p好好的run呢?废话不少_现在q以下exceptionQ?/span>

完整的ExceptionQ?br /> Exception starting filter struts2
javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
 at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
 at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<clinit>(DomHelper.java:167)
 at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:786)
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:132)
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)
 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)
 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
 at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:398)
 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:455)
 at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:225)
 at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:308)
 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:79)
 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3698)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4349)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
 at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
 at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
 at org.apache.catalina.core.StandardService.start(StandardService.java:480)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)


错误原因Q?
认ؓ是由于jdk1.5 ?tomcat5.0之间的关?TransformerFactoryImpl cȝ冲突造成的?/strong>
tomcat-5.0.28\common\endorsed下有两个jar包:xercesImpl.jar?strong>xml-apis.jar
Q其中的c?strong> javax.xml.transform.TransformerFactory
与jdk1.5中的c?strong>org.apache.xalan.processor.TransformerFactoryImpl其实是同一个类?br /> in tomcat java is called with the following argument:
-Djava.endorsed.dirs="X:\my_app\Portal\tomcat\common\endorsed"
In this directory you find two jar files: xercesImpl.jar and xml-apis.jar needed by tomcat and that must be loaded before all xmsl stuff present in the jdk (1.4 naming problem). And in the file xml-apis.jar the TransformerFactoryImpl is set to "org.apache.xalan.processor.TransformerFactoryImpl".

解决办法Q?br /> 1. ?strong>xml-apis.jarUdendorsed文g夏V?br /> 2. 用xalanpdjar包替换原来的xercesImpl.jar?strong>xml-apis.jar?br />    xalanpdjar包:serializer.jar、xalan.jar、xercesImpl.jar和xml-apis.jar?br /> 3. For other application, just check this file or dom3-xml-apis.jar in your class path.

Q以上参?a href="http://www.tkk7.com/allen-zhe/">立飞刀?a class="postTitle2" id="viewpost1_TitleUrl" href="http://www.tkk7.com/allen-zhe/archive/2007/03/02/101373.html">TransformerFactoryImpl not found exception一文,也谢谢作者解{这个难题)



 



wjywilliam 2008-04-27 21:26 发表评论
]]>
一个体现Java接口及工厂模式优点的例子 & 设计模式之Factoryhttp://www.tkk7.com/wjywilliam/archive/2008/03/07/184575.htmlwjywilliamwjywilliamFri, 07 Mar 2008 10:11:00 GMThttp://www.tkk7.com/wjywilliam/archive/2008/03/07/184575.htmlhttp://www.tkk7.com/wjywilliam/comments/184575.htmlhttp://www.tkk7.com/wjywilliam/archive/2008/03/07/184575.html#Feedback0http://www.tkk7.com/wjywilliam/comments/commentRss/184575.htmlhttp://www.tkk7.com/wjywilliam/services/trackbacks/184575.htmlgoo我们先来看看这两篇文章Q?br />

设计模式之Factory


板桥里h http://www.jdon.com 2002/10/07Q{载请保留Q?/p>

工厂模式定义:提供创徏对象的接?

Z使用?
工厂模式是我们最常用的模式了,著名的Jive论坛 ,大量用了工厂模式Q工厂模式在JavaE序pȝ可以说是随处可见?/span>

Z么工厂模式是如此常用Q因为工厂模式就相当于创建实例对象的newQ我们经常要ҎcClass生成实例对象Q如A a=new A() 工厂模式也是用来创徏实例对象的,所以以后new时就要多个心|是否可以考虑实用工厂模式Q虽然这样做Q可能多做一些工作,但会l你pȝ带来更大的可扩展性和量的修改量?/span>

我们以类SampleZQ?如果我们要创建Sample的实例对?

Sample sample=new Sample();

可是Q实际情冉|Q通常我们都要在创?span lang="EN-US" xml:lang="EN-US">sample实例时做点初始化的工?比如赋?查询数据库等?/span>

首先Q我们想到的是,可以使用Sample的构造函敎ͼq样生成实例写?

Sample sample=new Sample(参数);

但是Q如果创?span lang="EN-US" xml:lang="EN-US">sample实例时所做的初始化工作不是象赋DL单的事,可能是很长一D代码,如果也写入构造函CQ那你的代码很难看了Q就需要Refactor重整Q?/span>

Z么说代码很难看,初学者可能没有这U感觉,我们分析如下Q初始化工作如果是很长一D代码,说明要做的工作很多,很多工作装入一个方法中Q相当于很多鸡蛋放在一个篮子里Q是很危险的Q这也是有背?span lang="EN-US" xml:lang="EN-US">Java面向对象的原则,面向对象的封?Encapsulation)和分z?Delegation)告诉我们Q尽量将长的代码分派“切割”成每D,每D再“装”h(减少D和D之间偶合联pL?Q这P׃风险分散,以后如果需要修改,只要更改每段Q不会再发生牵一动百的事情?/span>

在本例中Q首先,我们需要将创徏实例的工作与使用实例的工作分开, 也就是说Q让创徏实例所需要的大量初始化工作从Sample的构造函C分离出去?/span>

q时我们需?span lang="EN-US" xml:lang="EN-US">Factory工厂模式来生成对象了Q不能再用上面简单new Sample(参数)?/span>q有,如果Sample有个l承如MySample, 按照面向接口~程,我们需要将Sample抽象成一个接?现在Sample是接?有两个子cMySample 和HisSample .我们要实例化他们?如下:

Sample mysample=new MySample();
Sample hissample=new HisSample();

随着目的深?span lang="EN-US" xml:lang="EN-US">,Sample可能q会"生出很多儿子出来", 那么我们要对q些儿子一个个实例?更糟p的?可能q要对以前的代码q行修改:加入后来生出儿子的实?q在传统E序中是无法避免?

但如果你一开始就有意识用了工厂模式,q些ȝ没有了.

工厂Ҏ
你会建立一个专门生?span lang="EN-US" xml:lang="EN-US">Sample实例的工?

public class Factory{

  public static Sample creator(int which){

  //getClass 产生Sample 一般可使用动态类装蝲装入cR?br />   if (which==1)
    return new SampleA();
  else if (which==2)
    return new SampleB();

  }

}

那么在你的程序中,如果要实例化Sample?׃?/span>

Sample sampleA=Factory.creator(1);

q样,在整个就不涉及到Sample的具体子c?辑ֈ装效果,也就减少错误修改的机?q个原理可以用很通俗的话来比?是具体事情做得多,容易范错误.q每个做q具体工作的人都深有体会,相反,官做得越?说出的话抽象越W统,范错误可能性就少.好象我们从编E序中也能悟Zh生道?呵呵.

使用工厂Ҏ 要注意几个角Ԍ首先你要定义产品接口Q如上面的Sample,产品接口下有Sample接口的实现类,如SampleA,其次要有一个factoryc,用来生成产品SampleQ如下图Q最双是生产的对象SampleQ?/p>

 

q一步稍微复杂一点,是在工厂类上进行拓展,工厂cM有承它的实现类concreteFactory?strong>?/em>

抽象工厂
工厂模式中有: 工厂Ҏ(Factory Method) 抽象工厂(Abstract Factory).

q两个模式区别在于需要创建对象的复杂E度上。如果我们创建对象的Ҏ变得复杂?如上面工厂方法中是创Z个对象Sample,如果我们q有新的产品接口Sample2.

q里假设QSample有两个concretecSampleA和SamleBQ而Sample2也有两个concretecSample2A和SampleB2

那么Q我们就上例中Factory变成抽象c?共同部分封装在抽象cM,不同部分使用子类实现Q下面就是将上例中的Factory拓展成抽象工?

public abstract class Factory{

  public abstract Sample creator();

  public abstract Sample2 creator(String name);

}

public class SimpleFactory extends Factory{

  public Sample creator(){
    .........
    return new SampleA

  }

  public Sample2 creator(String name){
    .........
    return new Sample2A

  }

}

public class BombFactory extends Factory{

  public Sample creator(){
    ......
    return new SampleB

  }

  public Sample2 creator(String name){
    ......
    return new Sample2B
  }

}

 

从上面看C个工厂各自生产出一套Sample和Sample2,也许你会疑问Qؓ什么我不可以用两个工厂方法来分别生Sample和Sample2?

抽象工厂q有另外一个关键要点,是因?SimpleFactory内,生Sample和生产Sample2的方法之间有一定联p,所以才要将q两个方法捆l在一个类中,q个工厂cL其本w特征,也许刉过E是l一的,比如Q制造工艺比较简单,所以名U叫SimpleFactory?/span>

在实际应用中Q工厂方法用得比较多一些,而且是和动态类装入器组合在一起应用,

举例

我们?span lang="EN-US" xml:lang="EN-US">Jive的ForumFactoryZQ这个例子在前面的Singleton模式中我们讨Q现在再讨论其工厂模?

public abstract class ForumFactory {

  private static Object initLock = new Object();
  private static String className = "com.jivesoftware.forum.database.DbForumFactory";
  private static ForumFactory factory = null;

  public static ForumFactory getInstance(Authorization authorization) {
    //If no valid authorization passed in, return null.
    if (authorization == null) {
      return null;
    }
    //以下使用了Singleton 单态模?br />     if (factory == null) {
      synchronized(initLock) {
        if (factory == null) {
            ......

          try {
              //动态{载类
              Class c = Class.forName(className);
              factory = (ForumFactory)c.newInstance();
          }
          catch (Exception e) {
              return null;
          }
        }
      }
    }

    //Now, q回 proxy.用来限制授权对forum的访?br />     return new ForumFactoryProxy(authorization, factory,
                    factory.getPermissions(authorization));
  }

  //真正创徏forum的方法由l承forumfactory的子cd完成.
  public abstract Forum createForum(String name, String description)
  throws UnauthorizedException, ForumAlreadyExistsException;

  ....

}

 

 

因ؓ现在?span lang="EN-US" xml:lang="EN-US">Jive是通过数据库系l存放论坛帖子等内容数据,如果希望更改为通过文gpȝ实现,q个工厂ҎForumFactory提供了提供动态接?

private static String className = "com.jivesoftware.forum.database.DbForumFactory";

你可以用自己开发的创徏forum的方法代替com.jivesoftware.forum.database.DbForumFactory可?

在上面的一D代码中一q了三U模?span lang="EN-US" xml:lang="EN-US">,除了工厂模式?q有Singleton单态模?以及proxy模式,proxy模式主要用来授权用户对forum的访?因ؓ讉Kforum有两Uh:一个是注册用户 一个是游客guest,那么那么相应的权限就不一?而且q个权限是诏I整个系l的,因此建立一个proxy,cM|关的概?可以很好的达到这个效?  

看看Java宠物店中的CatalogDAOFactory:

public class CatalogDAOFactory {

 

  /**

  * 本方法制定一个特别的子类来实现DAO模式?br />   * 具体子类定义是在J2EE的部|描q器中?br />   */

  public static CatalogDAO getDAO() throws CatalogDAOSysException {

    CatalogDAO catDao = null;

    try {

      InitialContext ic = new InitialContext();
      //动态装入CATALOG_DAO_CLASS
      //可以定义自己的CATALOG_DAO_CLASSQ从而在无需变更太多代码
      //的前提下Q完成系l的巨大变更?/p>

      String className =(String) ic.lookup(JNDINames.CATALOG_DAO_CLASS);

      catDao = (CatalogDAO) Class.forName(className).newInstance();

    } catch (NamingException ne) {

      throw new CatalogDAOSysException("
        CatalogDAOFactory.getDAO: NamingException while
          getting DAO type : \n" + ne.getMessage());

    } catch (Exception se) {

      throw new CatalogDAOSysException("
        CatalogDAOFactory.getDAO: Exception while getting
          DAO type : \n" + se.getMessage());

    }

    return catDao;

  }

}


CatalogDAOFactory是典型的工厂ҎQcatDao是通过动态类装入器className获得CatalogDAOFactory具体实现子类Q这个实现子cdJava宠物店是用来操作catalog数据库,用户可以Ҏ数据库的cd不同Q定制自q具体实现子类Q将自己的子cdl与CATALOG_DAO_CLASS变量可以?/span>

由此可见Q工厂方法确实ؓpȝl构提供了非常灵zd大的动态扩展机Ӟ只要我们更换一下具体的工厂ҎQ系l其他地Ҏ需一点变换,有可能系l功能进行改头换面的变化?/p>

设计模式如何在具体项目中应用?a target="_blank">《Java实用pȝ开发指南?/font>

--------------------------------------------------------------------------------------------------------------------------------------------------------------

一个体现Java接口及工厂模式优点的例子(转蝲?a >http://www.jspcool.com/j2se/20071019225405.htm)

随着模式概念的普及,了解模式和用模式的E序员越来越多,很多人在学习模式的时候,都会有这样一U疑惑:“有必要搞得这么复杂吗Q?#8221;。的,因ؓ教程的例子过于简单化Q这h便读者学习)Q或者是作者选例子的时候ƈ没有很好体现所讲模式的优点Q很多情况下如果仅就其例子的问题来说Q用模式是太复杂了。因此才Dq样的误解:“模式是把简单的问题复杂化吗Q?#8221;。当然不是,随着你开发实늚不断丰富Q你l会发现模式强大威力Q而且模式也ƈ非贵族化的编E方式,它就是一些经q提g的解决问题的Ҏ技巧?

通过学习模式Q程序员开始告别过d直线式的代码方式Q模式开扩了我们的视野,强化了我们面向对象编E的思维方式。然而现在又出现了另一个普遍的问题Q盲目应用模式。模式是问题的解x案,先有问题才有模式Q模式是依附于所要解决的问题的而生的。必M解模式在很多情况下是以提高代码的复杂度ؓ代h来增强灵zL、可复用性。如果在自已的代码中使用某一模式仅只提高了代码的复杂度,而其它方面收效甚微,或者某部䆾代码Ҏ׃存在灉|性及高复用性的需求,那么我们没有必要ؓ使用模式而放弃更直观单的代码写法?

一的高手90%_֊x问题的解x案,因ؓ扑ֈ了好的解x案,再写起代码会很轻松代码也z流畅,看这L代码是一Un受和提高Q二的熟手90%_֊x代码实现Q因为问题的解决Ҏq最佻I实现的代码也会比较复杂;三流菜鸟记流水帐,90%_֊在敲键盘Q常常做了大半才发现行不通,回过头来再用90%的时间敲键盘Q根本不会用CQ何模式,写出来的代码的只有他自已才能看懂。做出来的Y件也是支ȝ,做一丁点改动都要大费周折Q而且你还不知道改动后会生什么问题,大有住危戉K的感觉?

在这里还是D一个滥用模式的例子吧。我曑֏与过一个大集团公司QApȝ的第二期开发,开发沿用原有代码架构ƈ增加新的功能模块。文档很我d代码时就被它E序里的代码转来转去搞得头大如斗Q最后读懂了Q原代码架构M采用工厂模式Q而且是最复杂的抽象工厂模式。它把所有模块类都通过工厂生成q工厂套工厂Qƈ且每一个模块类都有一个接口,每个接口也只有一个模块现实类Q因为涉及权限控制还用了代理(proxy)模式。 L代码后我开始嵌入代码,发现每新增一个类Q都要到六个Java文g中去增加相应代码Q而在cM每增加一个方法,也要到它的接口等四个Java文g中去增加相应代码。天呀Q!Q记得当时我的小姆指怼不听使唤Q就是因为频J的使用Ctrl+C 、Ctrl+VQ小姆指按着Ctrl键给累的。整个项目组苦不堪言Q真烦透了。项目结束后我回֏玎ͼ代理模式用得q对Q现在针Ҏ限这cL向控制有AOP~程q种新的解决办法了)但工厂模式在q里Ҏ是画蛇添Q不仅没有解决什么问题,反而增加代码复杂度和耦合性,降低了开发效率连l护隑ֺ都提高了。而且那种每个cȝ单的加一个接口的方式Q更是没有道理,q让我很惌周星驰说q的一句话Q?#8220;球~~~不是q么t~~~~的,接口~~~不是q么用~~~?#8221;。言归正传,我们先来看这样一个常见问题:某系l需要支持多U类型的数据库。用qOracle、MSSQL{数据库的h都知道,它们的SQL~写方式都各有些不同。比如说Oracle的唯一标识自动+1字段用的是序列,MSSQL改一下字D属性就成了Q还有各U各自特有的SQL用法。ؓ了支持多数据库,N我们要开发多套系l?当然NO。请看下面的解决Ҏ?

即然数据库存在多U,我们可以系l中所有对数据库的操作抽象出来Q写成一个个Ҏl合C个类中,有几U数据库我们写几个q样的类。具体设计类囑֦下:

 


要说明:
OracleDataOperate、SqlserverDataOperate、MysqlDataOperateQ分别代表Oracle、Sqlserver、Mysqlq三U数据库的操作类。承自AbstractDataOperate
AbstractDataOperate是一个抽象类Q包含了那些不同U类数据库都是一样代码的操作Ҏ。承自DataOperate
DataOperate是上面说的数据操作类的统一接口Q只有两个方法:取得一条记录、插入一条记录?
DataOperateFactory是一个工厂方法,l一用它的方法来得到数据库操作类的实例?
SampleClass是我们系l的某个功能模块的类?
People是一个实体类Q代表一条记录。三个字Dcoid唯一标识W、name姓名、date生日?

详细说明Q?
Q、所有系l功能模块类只认DataOperatq个接口q不必管具体的实现类是OracleDataOperateqSqlserverDataOperate。DataOperate源代码如下:
public interface DataOperate {
//Ҏ记录的唯一标识取出一条记?
People getPeople(String oid);
//插入一条记?
boolean insertPeople(People people);
}

Q、AbstractDataOperate、OracleDataOperate、SqlserverDataOperate、MysqlDataOperate都是l承DataOperate接口的,没什么好说的Q省略?

Q、DataOperateFactory。我们看看工厂方法怎么写的?
public class DataOperateFactory {
public static final int ORACLE = 0; //定义三个表示数据库类型的帔R
public static final int MYSQL = 1;
public static final int SQLSERVER = 2;

private static DataOperate db;
private static int dataType = MYSQL;
/**
* Ҏ数据库类?dataType)取得一个数据库操作cȝ实例Q?
* q里对DataOperate使用了单例模式,因ؓOracelDataOperate{都是无状态的工具c,
* 所以整个系l只保留一个实例就行了?
*
* @return q回的是接口Q客L不必兛_具体是用那个实现c?
*/
public static DataOperate getInstance() {
if (db == null) {
if (dataType == ORACLE) //ҎdateTypeq回相应的实现类
return new OracelDataOperate();
if (dataType == MYSQL)
return new MysqlDataOperate();
if (dataType == SQLSERVER)
return new SqlserverDataOperate();
}
return db;
}
}

Q、接下来q看用端是如何调用工厂方法和使用数据操作cȝ?
/**
* pȝ某个功能c?
*/
public class SampleClass {
private DataOperate db; //声明一个数据库操作c,注意q里用的是接口噢
/**某方?/
public void sampleMethod() {
db = DataOperateFactory.getInstance();//得到单一实例
People p = db.getPeople("123"); //取得一条记?
db.insertPeople(p);//再插回去
}
}

  我们发现SampleClass中根本没有出现OracelDataOperate、MysqlDataOperate{的影子Q这是接口的威力。客L不必针对OracelDataOperate{写不同的代码,它只兛_DataOperate卛_Q具体要取那个类的逻辑qDataOperateFactory负责了?

ȝQ?
从例子中我们可以看到什么是面向接口的编E方式。SampleClass使用数据操作cd以不必关心具体是那个c,只要是符合接口的都行
要实例?只须调用DataOperateFactory.getInstance()卛_Q其它的交于DataOperateFactoryq个工厂来做吧,使用端什么都不用兛_?
我们要支持新的数据库cdQ只要象OracelDataOperate那样Q再写一个承AbstractDataOperate的类卛_Q比如SysbaseDataOperate。然后到DataOperateFactory中加入相应代码即可?
如果我们惌可配|性更高,可以用private static int dataType = MYSQL;中的D|到一个文本文件中?
  对于开发支持多U数据库的系l,强烈使用hibernateQ我现在做的pȝ是用hibernate的,开发时用MysqlQ到要给客户时将数据库换了DB2Q程序不用做M改动Q真正的无逢移植。不q这P本文所提到的方法就没什么用?


 

q两是我找到的关于Factory Mode的文章,但是前面的论q很好,后面的例子却不怎么P特别是第二篇的例子ƈ不符合实际也没必要这样做Q纯_Ҏ接口也可以实玎ͼFactory Modeq没有体现多。第一的׃乎比较切实,但是说的也不够清晰?/p>

wjywilliam 2008-03-07 18:11 发表评论
]]>
Javascript(JSValidation) http://www.tkk7.com/wjywilliam/archive/2007/04/07/109043.htmlwjywilliamwjywilliamFri, 06 Apr 2007 16:04:00 GMThttp://www.tkk7.com/wjywilliam/archive/2007/04/07/109043.htmlhttp://www.tkk7.com/wjywilliam/comments/109043.htmlhttp://www.tkk7.com/wjywilliam/archive/2007/04/07/109043.html#Feedback0http://www.tkk7.com/wjywilliam/comments/commentRss/109043.htmlhttp://www.tkk7.com/wjywilliam/services/trackbacks/109043.html原文出处

http://www.amowa.net/jsvalidation/userguide.html


wjywilliam 2007-04-07 00:04 发表评论
]]>
EMS SQL Manager 2007 Professional for Oracle 更新数据的问?字符集的问题)Q?/title><link>http://www.tkk7.com/wjywilliam/archive/2007/04/03/108196.html</link><dc:creator>wjywilliam</dc:creator><author>wjywilliam</author><pubDate>Tue, 03 Apr 2007 06:11:00 GMT</pubDate><guid>http://www.tkk7.com/wjywilliam/archive/2007/04/03/108196.html</guid><wfw:comment>http://www.tkk7.com/wjywilliam/comments/108196.html</wfw:comment><comments>http://www.tkk7.com/wjywilliam/archive/2007/04/03/108196.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.tkk7.com/wjywilliam/comments/commentRss/108196.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wjywilliam/services/trackbacks/108196.html</trackback:ping><description><![CDATA[<p>  最q一q的project的DB是oracleQ所以找了个W三方的sql 工具TOADQ当然toad非常的不错,而且功能非常多强Q但是用了这么久Q还是有点不习惯它的H口风格。而以前自己在玩mysql的时候又发现了一个非怸错的mysql理工具?span style="COLOR: #0000ff">EMS MYSQL MANAGER 2005</span>Q功能呢也是非常的强Q而且界面友善Q风格比较传l易用,在x没有一个EMS SQL MANAGER 是for oracle的呢Q结果前D|间终于给我下载到<span style="COLOR: #0000ff">EMS SQL Manager 2007 for Oracle</span>了,而且有了破解Q高兴得要命Q立d尝新。果然功能一L强大Q几乎toad有的ems sql manager都有了,而且界面易用友好Q例如filter的功能还比toad的强Q,决定用q个了?br></p> <p>但是问题l于出来了,在试的时候只用query功能Q没有进行在data browser 里面data的add和updateQ想不到我随便改一个记录,立刻显CZ<span style="COLOR: red">ORA-01461: can bind a LONG value only for insert into a LONG</span> 的错误,后来查了一下资料发C可能是long型的问题Q我Ҏ没有long type的columnQ也没超字符Q后来就发现是client的charsetEncoding的问题了Q是字符集的问题了,但是我在用for mysql的版本的时候,?#8220;database info”</p> <p>选项里面是有得设client char的,在for oracle里面却没有,好像是默认跟system的字W集吧, p样子Q没得设字符集就没法子修Ҏ据了Q一commit报<span style="COLOR: red">ORA-01461</span>:Q查了好久资料发现很h用EMS的工P真想用这工具阿,郁闷了很久阿。。。哪位仁兄高手用q知道解军_法的能告诉吗Q谢谢了</p> <img src ="http://www.tkk7.com/wjywilliam/aggbug/108196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wjywilliam/" target="_blank">wjywilliam</a> 2007-04-03 14:11 <a href="http://www.tkk7.com/wjywilliam/archive/2007/04/03/108196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>|页表单相关Ҏ整理http://www.tkk7.com/wjywilliam/archive/2006/11/19/82094.htmlwjywilliamwjywilliamSun, 19 Nov 2006 12:43:00 GMThttp://www.tkk7.com/wjywilliam/archive/2006/11/19/82094.htmlhttp://www.tkk7.com/wjywilliam/comments/82094.htmlhttp://www.tkk7.com/wjywilliam/archive/2006/11/19/82094.html#Feedback1http://www.tkk7.com/wjywilliam/comments/commentRss/82094.htmlhttp://www.tkk7.com/wjywilliam/services/trackbacks/82094.html |页表单相关Ҏ整理 (转蝲?.....忘记了,谢谢原作?

只能是一些限定的东西

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

只能是数字,判断按键的倹{?/strong>

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

附:获取键盘的KeyCode

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

限制|页用键?/strong>

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

再加个找按键的?/strong>

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

只能是IP地址

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

?default#savehistory防止后退清空text文本框: 

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

TEXTAREA自适应文字行数的多?/strong>

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

上传预览囄

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

L下拉选项的边?/strong>

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

下拉列表打开H口

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

通过下拉菜单传递蟩?触发submit)

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

TAB键在文本域中的体?/strong>

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

文本框的?下拉

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

一个复选框Q点M后一l复选框全部都选上

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]

Debug TextareaQ在U写 js 脚本的时候,用来x查错的东西!

q行代码?br />
 [Ctrl+A 全部选择 提示Q你可先修改部分代码Q再按运行]



wjywilliam 2006-11-19 20:43 发表评论
]]>
վ֩ģ壺 ޱ龫Ʒһ| Ƶ߲| avۺ߹ۿ| ͵޾Ʒ׺ˬ| ƵƷ| 91Ʒ| ѹۿ| ɫһһһһƵѿ| AVһӰƬ| þ˽˹Ʒ| ޹Ʒþһ| ޸ľƷԭ| ʮ˽վ߹ۿ| 벻Ļϵ| ˸ŮѲžþþ| ɫַȫ| AVһԧӰԺ | һaƬɫëƬ| 99þѾƷ72Ʒž| 99re߾ƷƵ| aëƬaëƬ| Ļ߿Ӱȫ| ɫ˿ѿ| һƵ߲| ȫëƬ| 鶹VAѾƷ| ĻƵ| ¼Ƶѿ| ˾þþùۿëƬ| ƷþþþþС˵| av뾫Ʒۺ | ˾ƷƵ| ߹ۿѹۿ| þ޾Ʒרɫ| ŷ޹Ʒþ| ޴Ƭѹۿ| ؼaaaaaaëƬ| Ļ뱬av| ޳AƬ߹ۿ3D| ޹Ļ߹ۿ| һƵ߹ۿİ|