网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

struts2检验框架的具体应用综合

http://www.diybl.com/ 2008-2-29  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】

p</result>
         <result name="success">/validate/order.jsp</result>
     </action>
                <!--调用execute转到新增页面-->
                <action name="ordernew" class="org.itfuture.www.actions.OrderAction" >
         <result name="success">/validate/ordernew.jsp</result>
     </action>
                <!--调用传递的input方法转到新增页面-->
     <action name="order_*" method="{1}" class="org.itfuture.www.actions.OrderAction" >
         <result name="input">/validate/ordernew.jsp</result>
     </action>
    </package>
</struts>
 
二.校验框架代码是运行步骤和说明
 
    为了打开order新增表单,index页面使用了三种方式其中第三个超连接涉及了order_input,当点击此超连接时。
 
     1. 框架将这个和配置文件中的Logon_*映射相匹配起来;
 
     2. method="{1}" 属性被method="input"替换;
 
     3. 框架调用了OrderAction类的input方法;
 
     4. 因为“input”在一个特殊的方法的列表中,所以验证框架将不会调用;
 
     5. 默认的input方法返回一个“input”作为返回结果(input方法是从ActionSupport父类中的方法,本例重写了该input方法);
 
     6. 框架展现“ordernew.jsp”来作为回应结果,没有带有任何的验证信息。
 
     为了提交order新增表单,ordernew.jsp页面调用了OrderAction(OrderAction中的add业务)。
 
     1. Struts2框架为目标OrderAction提供验证;
 
     2. 找到OrderAction-validation.xml文件,框架为该类创建了一个验证对象,这个验证对象基于XML文件;
 
     3. 验证器对输入的数据产生作用;
 
     4. 如果验证失败,错误信息被添加到内部序列中;
 
     5. 当所有的验证器都已经执行后,如果框架发现有错误信息产生,它寻找“input”结果对应的页面,而不调用OrderAction对象的业务方法add;
    
     6. 如果通过验证,调用OrderAction对象的add方法,返回“success”对应的结果。
 
三.校验框架代码其它分析说明
    1、如果点击index.jsp中的第二个超连接,那么会调用execute()方法,验证框架将会被调用,对展现的ordernew.jsp中表单输入框数据进行校验,这就会出现新增页面出现了,但验证失败的错误信息也在页面出现了(在新增页面形成的过程中,没来得及在新增页面的表单中输入数据就校验了),这不符合常理.
    2、如果点击index.jsp中的第一个超连接,直接调用ordernew.jsp,就会在该页面报错,错误信息如下:
FreeMarker template error!
 
Method public java.lang.String com.opensymphony.xwork2.validator.validators.ValidatorSupport.getMessage(java.lang.Object) threw an exception when invoked on com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator@121e761
The problematic instruction:
----------
==> ${validator.getMessage(action)?js_string} [on line 50, column 26 in template/xhtml/form-close-validate.ftl]
 in include "/${parameters.templateDir}/xhtml/form-close-validate.ftl" [on line 25, column 1 in template/xhtml/form-close.ftl]
----------
 
Java backtrace for programmers:
 
.......
原因是在校验配置文件OrderAction-validation.xml中我们使用了package.properties中消息键,该消息资源中的消息在不调用Action是不能使用的,只有调用Action,该页面对应的校验配置文件OrderAction-validation.xml才能使用了package.properties中消息键。所以直接调用ordernew.jsp是不行的
   
 
四.分析说明
 
&nbs

欢迎光临DIY部落,点击这里查看更多文章教程   【点击打包该文章】
如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言