??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区在线观看视频,精品国产成人在线影院,欧美日韩电影一区二区http://www.aygfsteel.com/table/category/36708.htmlzh-cnFri, 08 Jan 2010 06:16:26 GMTFri, 08 Jan 2010 06:16:26 GMT60对struts2的底层源码的解读http://www.aygfsteel.com/table/articles/307164.htmlThu, 24 Dec 2009 07:42:00 GMThttp://www.aygfsteel.com/table/articles/307164.htmlhttp://www.aygfsteel.com/table/comments/307164.htmlhttp://www.aygfsteel.com/table/articles/307164.html#Feedback0http://www.aygfsteel.com/table/comments/commentRss/307164.htmlhttp://www.aygfsteel.com/table/services/trackbacks/307164.html

此问题网上很多h在讨论,至今q是没有很好的解x案,在我Ҏ(gu)码进行解dQ现在已l有个很好的解决Ҏ(gu)Q业务是用户注册Q含复选框Q,用户注册验证出错后,错误信息的要昄在相应控件的后面Q同时要让请求选中的复选框处于选中状态。希望?zhn)往下看Q说不定会小有收获哦Q!

步骤Q?/p>

1)开发工兯|?/span>

   a)工程~码utf-8

   b)文g代码样式Q?/span>java?/span>xmlQ?/span>

   c)文g~码格式utf-8Q?/span>jsp?/span>html?/span>jsQ?/span>

2)创徏目录l构

3) 搭徏struts2的环境,

a)    导入jar?/span>

参?font face="Times New Roman">struts2.1.8下的app下的struts2-blank-2.1.8目Q拷入基本的jar?/font>

==========================================================

struts2-core-2.x.x.jar :Struts 2框架的核心类?/span>

       xwork-2.x.x.jar :XWorkcdQ?/span>Struts 2在其上构?/span>

ognl-2.6.x.jar :对象囑֯航语aQ?/span>Object Graph Navigation LanguageQ,struts2框架通过其读写对象的属?/span>

       freemarker-2.3.x.jar :Struts 2?/span>UI标签的模板?/span>FreeMarker~写

       commons-fileupload-1.2.1.jar?/span>commons-io-1.3.2.jarq两?/span>jar是用于文件上?/span>

===========================================================

       b)修改web.xml配置文g、添?/span>struts.xml文g

       c)启动目试index.jsp界面输出

3Q注册页?/font>

面的源码如下:_心了点没有实现U国际化


怿(zhn)已l推断出我的目大致部vQ我q里q要描qCQ?/p>

配置文gQ?span style="color: blue">struts.xml?/span>strus-user.xmlZ模块化配|,UserAction-registerUser-validation.xml在执?/span>UserAction?/span>registerUserҎ(gu)时进行校?/span>

属性文Ӟ有全局的国际化文g?/span>user模块的国际化文g

c:UserAction?/span>UserBean?/span>Hobby

工程目录


Struts.xml文g


UserActionc?/p>




工程目录
Struts.xml文g
UserActionc?/div>
W一个问题出CQ如下图Q?/span>
说明Q?/div>
很多人都是对此很烦恼Qstruts2使用的默认主题是xhtmlQ查看html面的源码发玎ͼ它给我们生成了表格布局Q所以界面比较整齐,但在提供便利的同Ӟ也带来些烦恼Q就是错误提C出现的位置?/div>
解决Ҏ(gu)Q?/div>
1Q把主题设ؓtheme=simpleQ自己去控制布局Q?/div>
2Qstruts使用freemarker模版技术,为我们标{成了html代码Q所以我们通过修改模版讄错误信息提示的位|?/div>
解读源码了:
 
a: <s:textfield/>q是strus2l我们提供标{,所以我们查看官Ҏ(gu)档得知struts-tags.tld在struts-core.jar文g里,每个标签都是一个javac,只是该类extends TagSupportQ我们查看TextFieldTagc,其实有经验的人都能猜的八?ji)不dQ?zhn)肯定是的?/span>
查看TextFieldTagc?/div>
发现它没有doStartTag()Ҏ(gu)Q所以猜肯定在父c里定义了,查看AbstractUITagQ这个类里也没有doStartTag()Ҏ(gu)Q这个类是所有UI标签的父c,里面定义了标{属?/div>
l箋查看父类Q?/div>
该类有doStartTag()Ҏ(gu)Q?/div>
我们查看得知Qcontainer容器注入了componentlgQ组件会话出html文本Q所有我们需要查看着个组件的具体实现c,在TextFieldTag里面发现
查看Component具体cTextFieldQ?/div>
查看注释得知该类构徏html文本Q但Z么TextField没有l承ComponentcdQ一猜就是UIBeanl承了,查看
果然是承了ComponentQ学框架思想最重要的是看别人的注释Q因为注释是别h思想的表达,q个c负责通过模版构徏html文本Q所以我们最重要的是扑ֈ模版的位|,q个我也是大概看懂,毕竟q没辑ֈ水^Q相信?zhn)已经辑ֈQ大致意思是找这些属性|从而定位到ftl模版文g
struts.ui.theme=xhtml
 
struts.ui.templateDir=template
struts.ui.templateSuffix=ftl

?<s:checkbox/> ?template/xhtml/checkbox.ftl模版文gQ类?lt;s:textfield/>,在strus2-core.jar下找textfield.ftlQ发现是text.ftl,打开我们查看Q?/p>

 
包含三个模版Qcontrolheader.ftl又包?span style="font-size: 10pt">controlheader-core.ftl文gQ该文g才是核心Q?/span>
现在我们要修改controlheader-core.ftl、controlfooter.ftl文gQ把错误信息攑ֈcontrolfooter.ftl里面Q我们可以有两种方式修改Q?/div>
1Q?nbsp;拯Z个文Ӟ修改后再压羃q去Q严重不Q)
2Q?nbsp;既然有这L需求,strus2团队肯定考虑CQ这让我实在太佩服他们了Q每个细节考虑的都是那么周刎ͼ看官Ҏ(gu)?/div>
Strus2团队提出了模版的加蝲、选择模版目录、选择主题、扩展主题。我们想让框架加载我们的模版文gQ所以我们点击Template Loading链接查看Q?/div>
 
意思大概是Q首先加载应用程序\径下模版文gQ然后去加蝲classpath下的模版文gQ如果需要覆盖某模版Q拷贝修改后攄应用E序下,那样首先加载。本语不是太好,如有出处Q请见谅Q?/div>
现在我们需要把两个ftl文g攄a(chn)pplication下,有什么格式要求吗Q?/div>
本章里strus2团队q给我们提供很多Q徏议我们不要随便更换模版引擎,如要修改ftl文g最好把源文件拷贝出来加以修改,不要自己手工重写Q以防止出错?/div>
怿也不用解释了Q格式ؓQ?tt>/template/$theme/$template.ftl.
所以我们只要在Web-Root下创?template/xhtml文g夹,拯controlheader-core.ftl、controlfooter.ftl文g再加以修攏V?/div>
本h对于freemarker语言不是很了解,但掌握了思想Q这U增增删删的操作q是可以应付的,l过几轮修改QM搞定了?/div>
----------------------------------------------------------------------------------------------------
W二个问题:
先对strus2的默认拦截器原理说下
官方文档q两行最能表达我的意思,excludeMethods参数是设|该拦截器忽略哪些方法,下面反之?span style="color: blue">q简单原理相信?zhn)非常了解了,来看下我们这里出现的情况吧?/span>
q是最普遍的业务逻辑Q?/div>
q是strus-user.xml配置文g里的registerUser*.action配置Q?/div>
情况一Q?/span>
我们按此配置q行Q我们不填用户名注册Q结果出现如下情况:
说明Q?/div>
Z么出现无法显C网呢Q我们注册首先被validate拦截器拦截后QUserAction-registerUser-validation.xml验证用户名不能ؓI,l过workflow拦截器,发现验证出错了,所以蟩转input试图Q我们input没有配置typeQ默认是dispatcherQ我们这栯{发的话,则不再被strus2的拦截器拦截Q相当于览器访问registerUserUI静态资源,因ؓ压根没有Q?span style="color: blue">所?/span>tomcat容器无法讉KQ则出现无法昄|页?/div>
情况二:
好的我们现在修改inputl果的type属性ؓredirectQ?/div>
我们选中两个爱好Q提交返回界面如下:
开始选中的被取消了,q且没有“用户名不能ؓI?#8221;的错误信息?/span>
说明Q?/div>
Z么会错误信息没了呢?同样l过validate、workflow拦截器后Q蟩转input试图Q一但我们重定向Q则strus2框架会ؓ我们创徏一个新?/span>UserAction对象Q则fieldErrors?span style="font-size: 10pt; color: black">UserBean?/span>hobby数组都ؓnull了,所以错误信息、开始选中的都昄不出来了?/span>
情况三:
怿(zhn)已l有解决Ҏ(gu)?/span>Q把input试图?/span>type设ؓchaincdQ?/span>chaincd的作用是Q让该请求重新被拦截器拦截,好我们来修改Q?/span>
我们同样不填用户名,选中两个爱好Q点L册后Q发现如下结果:
意思大概是Q?span style="color: blue">发现一个无限递归调用?/span>
说明Q?/div>
怎么会出现这h限递归呢?哪里在递归调用Q我们来分析一下流E,当经qvalidate、workflow拦截器后Q蟩转input试图Q此时type=chainQ所以我们看下设|ؓchaincd后,struts2到底都干了些什么?在官Ҏ(gu)?strong>Action Chaining一章里讲解刎ͼ
大概意思是Q?/span>如果你要拯当前的action属性到当前chain上的actionQ你需要应用Chaining拦截器,该拦截器会拷贝请求上?/span>parameters?/span>value stack传递到目标action?/span>Q原始的action会保存valueStackQ允许目标action讉K前面所有action的valueStack作用域上的属性,同样对于chain的resultl果试图如jsp、velocity界面同样可以讉Kq些属性?/div>
=====================================================
所以当我们以chain方式讉KregisterUserUI.actionQ原先action的valueStack上的fieldErrors同样被拷贝到当前UserAction对象fieldErrors字段里,在经qworkflow拦截器后Q又发现有错误,同样调用input试图Q进而又去调用registerUserUI.actionQ经qworkflow拦截器后Q又发现有错误,又去调用input试图Q进而递归调用?/div>
现在该怎样解决呢?我们要做的就是,让他调用registerUserUI.action时被workflow拦截器拦截后Q不再验证是否有错误Q前面说到过excludeMethods参数Q我们查看workflow拦截?/div>
发现他忽略inputҎ(gu)Q所以我们加上这L配置Q?/div>
修改UserAction的registerUserUIҎ(gu)为inputQok了!我们q行同样不填用户名、选中两个爱好提交Q运行结果ؓQ?/div>
注意Q?/div>
虽然chain方式对于完成q种业务很方便,官方提示我们谨慎使用Q过度用会造成E序的代码؜乱,到时q是Ҏ(gu)业务来决定?/div>


2009-12-24 15:42 发表评论
]]>推荐几个比较好的的javapd视频http://www.aygfsteel.com/table/articles/280536.htmlSun, 07 Jun 2009 17:04:00 GMThttp://www.aygfsteel.com/table/articles/280536.htmlhttp://www.aygfsteel.com/table/comments/280536.htmlhttp://www.aygfsteel.com/table/articles/280536.html#Feedback0http://www.aygfsteel.com/table/comments/commentRss/280536.htmlhttp://www.aygfsteel.com/table/services/trackbacks/280536.htmlv512工作室_Java高端培训pd视频?Java JSP Servlet Struts Struts2 Hibernate Spring Eclipse Compass Lucene)12?6日最新更新[DVDRip]|站Q?a target="_blank">http://www.jobedu.com.cn

在线观看地址Q?a target="_blank">http://v.youku.com/v_playlist/f1989711o1p0.html

在线下蝲地址Q?a target="_blank">http://www.verycd.com/topics/215898/

MyEclipse开发JAVA相关 在线观看Q?a target="_blank">http://www.youku.com/playlist_show/id_1628265.html


《传智播?2.3\spring\jdbc\EJB3.0\ajax\hibernate\Struts\java视频教程?SPRING2.5\AJAX\JAVA\JNI\FTP\AJAX\ibatis\OA\JDBC)[压羃包]

http://www.verycd.com/topics/249195/


《尚学堂U技.马士?JAVA.pd视频教程08q??0日更新?java video courses)

http://www.verycd.com/topics/93279/

学堂spring 在线Q?a target="_blank">http://www.youku.com/playlist_show/id_2830389.html

《美沛_创培训课E之软g开发系列视??8更新?br />
http://www.verycd.com/topics/88620/


?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=J2EE">J2EE WebE序开发定向班V1.0 Java׃班V2.0 Q完整版Q》chinaitlab 完整?br />
http://www.verycd.com/topics/74419/


《浪?J2EE Struts 2应用开发详解系列视频?br />
http://www.verycd.com/topics/210454/


《传智播客_张孝java视频教程_1.17_javaweb/javascript/java?java\javascript\javaweb\courses)

http://www.verycd.com/topics/239368/


《IT?sh)子教育门户JAVA培训之Struts 更新struts2.0》第一?br />
http://www.verycd.com/topics/117656/

《IT?sh)子教育门户》官|?a target="_blank">http://www.mldn.cn/articlelist/article_58_adddate_desc_1.htm

spring 入门 Q?a target="_blank">http://v.youku.com/v_show/id_XMTIxNTU1ODA=.html


《MLDN出品JAVA风暴-JAVA学习的终?span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D7%CA%C1%CF">资料?JAVASE )[压羃包]

http://www.verycd.com/topics/2722570/


《浪曦_J2EE原创_Struts 1.X培训视频 2008/4/19更新?br />
http://www.verycd.com/topics/243287/


《计机视频教程pd—张孝祥java培训》[RMVB]

http://www.verycd.com/topics/17367/




更多更多Q?br />
http://www.verycd.com/search/fol ... =1&status=elite


2009-06-08 01:04 发表评论
]]> վ֩ģ壺 | | | | ɽ| ˮ| | ˮ| ƽ˳| ƽ| | | | ƺ| | | ʼ| | | | | | ƺ| ݸ| ԭ| ϲ| Զ| ˼é| | н| | | Ϻ| Ͻ| | | | | ɽ| | ľ|