﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-TSH,SSH开发-随笔分类-Struts</title><link>http://www.blogjava.net/yc1354/category/19617.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:43:38 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:43:38 GMT</pubDate><ttl>60</ttl><item><title>关于struts-config里action元素里的attribute属性用途的理解</title><link>http://www.blogjava.net/yc1354/archive/2007/02/06/98372.html</link><dc:creator>赵永超</dc:creator><author>赵永超</author><pubDate>Tue, 06 Feb 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/yc1354/archive/2007/02/06/98372.html</guid><wfw:comment>http://www.blogjava.net/yc1354/comments/98372.html</wfw:comment><comments>http://www.blogjava.net/yc1354/archive/2007/02/06/98372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yc1354/comments/commentRss/98372.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yc1354/services/trackbacks/98372.html</trackback:ping><description><![CDATA[action mapping中的attribute 属性到底是干什么用的, 很早以前一直不太了解,今天突然又想到了这个问题,感觉不能再扔一边不管了, 一定要解决它.<br /><br /><br />这是在网上查到的关于attribute的解释.<br />1）应用前提，attribute只有在设置了name后才有意义。<br />2）attribute可以实现对象的重用，即如果设置了attribute属性，在创建actionform是，会先去查找相应的scope中是否有此对象，如果有，则重用，否则创建新的对象。<br />3）当你将创建的acitonForm保存到相应的scope中时，你想用一个更有意义的名字来访问它时，它就有意义了。<br /><br />可是,看到"一个更有意义的名字的时候", 我好像有点理解了<br />&lt;action<br />attribute="newLoginForm"<br />name="loginForm"<br />type="loginAction" <br />scope="request"<br />path="/login"&gt;<br /><br /><br />在struts实例化actionform的时候,struts是根据attribute的值来查找并创建actionform，有两种情况：如果已经存在，那么从内存中取回；如果第一次实例化，那么创建，并放入内存。<br /><p>org.apache.struts.util.RequestUtils中的源代码<br /><br />   public static Actionform createActionform(<br />       HttpServletRequest request,<br />       ActionMapping mapping,<br />       ModuleConfig moduleConfig,<br />       ActionServlet servlet) {<br />       ............<br />      ............<br /><br />       String attribute = mapping.getAttribute();<br />      ......<br />       Actionform instance = null;<br />       HttpSession session = null;<br /><br />       if ("request".equals(mapping.getScope())) {<br />           instance = (Actionform) request.getAttribute(attribute);<br />       } else {<br />           session = request.getSession();<br />           instance = (Actionform) session.getAttribute(attribute);<br />       }<br />      ................<br />        ................<br />       <br />       }<br />       <br />如果没有配置attribute属性的话, struts才会从name属性里读出要创建的formbean 的名字,并创建一下实例,看下边的源代码就知道了, 呵呵.<br /><br /><br />org.apache.struts.config.ActionConfig<br /><br />   protected String attribute = null; 
</p><p>   public String getAttribute() {<br /> //就是这里了. <br />       if (this.attribute == null) {<br />           return (this.name);<br />       } else {<br />           return (this.attribute);<br />       }<br />   } 
</p><p>   public void setAttribute(String attribute) {<br />       if (configured) {<br />           throw new IllegalStateException("Configuration is frozen");<br />       }<br />       this.attribute = attribute;<br />   }<br /><br /></p><img src ="http://www.blogjava.net/yc1354/aggbug/98372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yc1354/" target="_blank">赵永超</a> 2007-02-06 16:51 <a href="http://www.blogjava.net/yc1354/archive/2007/02/06/98372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts下运用validator框架进行表单验证的常用方法</title><link>http://www.blogjava.net/yc1354/archive/2007/02/06/98275.html</link><dc:creator>赵永超</dc:creator><author>赵永超</author><pubDate>Tue, 06 Feb 2007 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/yc1354/archive/2007/02/06/98275.html</guid><wfw:comment>http://www.blogjava.net/yc1354/comments/98275.html</wfw:comment><comments>http://www.blogjava.net/yc1354/archive/2007/02/06/98275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yc1354/comments/commentRss/98275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yc1354/services/trackbacks/98275.html</trackback:ping><description><![CDATA[第一步,在struts-config文件里添加valudator插件<br />&lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt;<br />    &lt;set-property property="pathnames" value="/WEB-INF/validator-rules.xml,  /WEB-INF/validation.xml" /&gt;<br />  &lt;/plug-in&gt;<br /><br />在action配置里添加属性<br />  validate="true"<br /><br /><br />第二步,<br /><br />在validation.xml文件里添加要验证的表单字段的信息<br /><br />&lt;form-validation&gt;<br />    &lt;formset&gt;<br /> &lt;form name="logonForm"&gt;<br />  &lt;field<br />     property="ipcode"<br />     depends="required,minlength"&gt;<br />  &lt;arg0 key="LogonForm.ipcode"/&gt;<br />  &lt;arg1 name="minlength" key="${var:minlength}" resource="false"/&gt;<br />          &lt;var&gt;<br />           &lt;var-name&gt;minlength&lt;/var-name&gt;<br />           &lt;var-value&gt;4&lt;/var-value&gt;<br />         &lt;/var&gt;<br />  &lt;/field&gt;<br />  &lt;field<br />     property="password"<br />     depends="required,mask"&gt;<br />     &lt;arg0 key="LogonForm.password"/&gt;<br />     &lt;var&gt;<br />  &lt;var-name&gt;mask&lt;/var-name&gt;<br />  &lt;var-value&gt;^[0-9a-zA-Z]*$&lt;/var-value&gt;<br />     &lt;/var&gt;<br />  &lt;/field&gt;<br />        &lt;/form&gt;<br />    &lt;/formset&gt;<br />&lt;/form-validation&gt;<br /><br /><br />在资源文件里添加<br /><br /><br />validation.test.title=struts validation test<br />errors.required={0} is required.&lt;p&gt;<br />errors.minlength={0} can not be less than {1} characters.&lt;p&gt;<br />errors.maxlength={0} can not be greater than {1} characters.&lt;p&gt;<br />errors.invalid={0} is invalid.
<p>errors.byte={0} must be an byte.<br />errors.short={0} must be an short.<br />errors.integer={0} must be an integer.<br />errors.long={0} must be an long.<br />errors.float={0} must be an float.<br />errors.double={0} must be an double.</p><p>errors.date={0} is not a date.<br />errors.range={0} is not in the range {1} through {2}.<br />errors.creditcard={0} is not a valid credit card number.<br />errors.email={0} is an invalid e-mail address.&lt;p&gt;</p><p>LogonForm.ipcode=&lt;font color=blue&gt;User name&lt;/font&gt;<br />LogonForm.password=&lt;font color=blue&gt;User password&lt;/font&gt;<br /><br />等等你所想要添加的信息<br /><br /></p><img src ="http://www.blogjava.net/yc1354/aggbug/98275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yc1354/" target="_blank">赵永超</a> 2007-02-06 13:34 <a href="http://www.blogjava.net/yc1354/archive/2007/02/06/98275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>