日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2类型转换+校验

發布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2类型转换+校验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://383984216-qq-com.iteye.com/blog/1151938

1.action中validate()與validateXxx()

用于action執行前的校驗,如果校驗失敗,跳到input視圖,
前者校驗整個Action;
后者校驗該Action中的Xxx方法.
如果兩者都有,則validateXxx方法會先調用。

2.struts2中輸入校驗的流程

a.類型轉換器將用戶請求字符串的參數轉化為java類型,并將其設為Action的屬性值。
b.如果轉換過程中出現異常,異常將保存在ActionContext中,conversionError攔截器負責將其封裝到fieldError中,否則直接到c,類型轉換完畢。
c.通過反射調用validateXxx(),然后調用validate()。
d.如果上面3步沒有出現fieldError,則調用action的處理請求方法,否則跳到input視圖.

3.struts2校驗框架

校驗配置文件的DTD在xword-core-2.2.3.jar中,系統自帶的校驗器的xml配置文件是
xword-core-2.2.3.jar里的com.opensymphony.xword2.vilidator.validators.default.xml文件

校驗配置文件名稱必須為
ActionClassName-validation.xml:Action類名-validation.xml
ActionClassName-ActoinAliasName-validation.xml:Action類名-類別名-validation.xml
類別名為在struts.xml中action的name屬性名。

如果要輸出國際化信息,則使用<message key="資源文件鍵名">或<message>${getText("資源文件鍵名")</message>

以上是服務器校驗,如果需要客戶端校驗,可以在提供了服務器校驗的基礎上,在<s:form>中添加validation="true"屬性,這樣,客戶端會根據服務端校驗框架自動生產客戶端的javascript語句,但不是所有的系統自帶校驗器都支持生成客戶端校驗腳本。

注:如果配置的自帶的校驗器不支持生成客戶端腳本,而客戶端form又設置了validation="true",那么將會報錯:

Java代碼 ?
  • Method?public?java.util.List?org.apache.struts2.components.Form.getValidators(java.lang.String)?threw?an?exception?when?invoked?on?org.apache.struts2.components.Form@5810af??
  • The?problematic?instruction: ??
  • ---------- ??
  • ==>?list?tag.getValidators("${tagName}")?as?validator?[on?line?46,?column?9?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: ??
  • ---------- ??
  • freemarker.template.TemplateModelException:?Method?public?java.util.List?org.apache.struts2.components.Form.getValidators(java.lang.String)?threw?an?exception?when?invoked?on?org.apache.struts2.components.Form@5810af??
  • ????at?freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130) ??
  • ????at?freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) ??
  • ????at?freemarker.core.Expression.getAsTemplateModel(Expression.java:89) ??
  • ????at?freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:417) ??
  • ????at?freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.MixedContent.accept(MixedContent.java:92) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.MixedContent.accept(MixedContent.java:92) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.Environment.include(Environment.java:1483) ??
  • ????at?freemarker.core.Include.accept(Include.java:169) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.MixedContent.accept(MixedContent.java:92) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.Environment.process(Environment.java:190) ??
  • ????at?freemarker.template.Template.process(Template.java:237) ??
  • ????at?org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157) ??
  • ????at?org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559) ??
  • ????at?org.apache.struts2.components.UIBean.end(UIBean.java:513) ??
  • ????at?org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) ??
  • ????at?org.apache.jsp.index_jsp._jspx_meth_s_005fform_005f0(index_jsp.java:226) ??
  • ????at?org.apache.jsp.index_jsp._jspService(index_jsp.java:103) ??
  • ????at?org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ??
  • ????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:803) ??
  • ????at?org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384) ??
  • ????at?org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) ??
  • ????at?org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) ??
  • ????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:803) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) ??
  • ????at?org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) ??
  • ????at?org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) ??
  • ????at?org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) ??
  • ????at?org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) ??
  • ????at?org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) ??
  • ????at?org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) ??
  • ????at?org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216) ??
  • ????at?org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) ??
  • ????at?org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) ??
  • ????at?org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) ??
  • ????at?java.lang.Thread.run(Thread.java:619) ??
  • Caused?by:?java.lang.NullPointerException ??
  • ????at?com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorKey(AnnotationActionValidatorManager.java:219) ??
  • ????at?com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:76) ??
  • ????at?com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:72) ??
  • ????at?org.apache.struts2.components.Form.getValidators(Form.java:265) ??
  • ????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:597) ??
  • ????at?freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:840) ??
  • ????at?freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106) ??
  • ????...?48?more ??
  • 2011-8-18?0:17:17?org.apache.catalina.core.StandardWrapperValve?invoke ??
  • 嚴重:?Servlet.service()?for?servlet?jsp?threw?exception ??
  • java.lang.NullPointerException ??
  • ????at?com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorKey(AnnotationActionValidatorManager.java:219) ??
  • ????at?com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:76) ??
  • ????at?com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:72) ??
  • ????at?org.apache.struts2.components.Form.getValidators(Form.java:265) ??
  • ????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:597) ??
  • ????at?freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:840) ??
  • ????at?freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106) ??
  • ????at?freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) ??
  • ????at?freemarker.core.Expression.getAsTemplateModel(Expression.java:89) ??
  • ????at?freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:417) ??
  • ????at?freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.MixedContent.accept(MixedContent.java:92) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.MixedContent.accept(MixedContent.java:92) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.Environment.include(Environment.java:1483) ??
  • ????at?freemarker.core.Include.accept(Include.java:169) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.MixedContent.accept(MixedContent.java:92) ??
  • ????at?freemarker.core.Environment.visit(Environment.java:210) ??
  • ????at?freemarker.core.Environment.process(Environment.java:190) ??
  • ????at?freemarker.template.Template.process(Template.java:237) ??
  • ????at?org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157) ??
  • ????at?org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559) ??
  • ????at?org.apache.struts2.components.UIBean.end(UIBean.java:513) ??
  • ????at?org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) ??
  • ????at?org.apache.jsp.index_jsp._jspx_meth_s_005fform_005f0(index_jsp.java:226) ??
  • ????at?org.apache.jsp.index_jsp._jspService(index_jsp.java:103) ??
  • ????at?org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ??
  • ????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:803) ??
  • ????at?org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384) ??
  • ????at?org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) ??
  • ????at?org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) ??
  • ????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:803) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) ??
  • ????at?org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) ??
  • ????at?org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) ??
  • ????at?org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) ??
  • ????at?org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) ??
  • ????at?org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) ??
  • ????at?org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) ??
  • ????at?org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) ??
  • ????at?org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216) ??
  • ????at?org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) ??
  • ????at?org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) ??
  • ????at?org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) ??
  • ????at?java.lang.Thread.run(Thread.java:619)??
  • Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@5810af The problematic instruction: ---------- ==> list tag.getValidators("${tagName}") as validator [on line 46, column 9 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: ---------- freemarker.template.TemplateModelException: Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@5810afat freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)at freemarker.core.Environment.visit(Environment.java:417)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.Environment.include(Environment.java:1483)at freemarker.core.Include.accept(Include.java:169)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.Environment.process(Environment.java:190)at freemarker.template.Template.process(Template.java:237)at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157)at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)at org.apache.struts2.components.UIBean.end(UIBean.java:513)at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)at org.apache.jsp.index_jsp._jspx_meth_s_005fform_005f0(index_jsp.java:226)at org.apache.jsp.index_jsp._jspService(index_jsp.java:103)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NullPointerExceptionat com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorKey(AnnotationActionValidatorManager.java:219)at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:76)at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:72)at org.apache.struts2.components.Form.getValidators(Form.java:265)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:597)at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:840)at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)... 48 more 2011-8-18 0:17:17 org.apache.catalina.core.StandardWrapperValve invoke 嚴重: Servlet.service() for servlet jsp threw exception java.lang.NullPointerExceptionat com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorKey(AnnotationActionValidatorManager.java:219)at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:76)at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:72)at org.apache.struts2.components.Form.getValidators(Form.java:265)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:597)at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:840)at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93)at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167)at freemarker.core.Environment.visit(Environment.java:417)at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.Environment.include(Environment.java:1483)at freemarker.core.Include.accept(Include.java:169)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.MixedContent.accept(MixedContent.java:92)at freemarker.core.Environment.visit(Environment.java:210)at freemarker.core.Environment.process(Environment.java:190)at freemarker.template.Template.process(Template.java:237)at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157)at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)at org.apache.struts2.components.UIBean.end(UIBean.java:513)at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)at org.apache.jsp.index_jsp._jspx_meth_s_005fform_005f0(index_jsp.java:226)at org.apache.jsp.index_jsp._jspService(index_jsp.java:103)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)at java.lang.Thread.run(Thread.java:619)



    4.struts2校驗文件的搜索順序

    如果定義了Test-validation.xml和Test-login-validation.xml兩個文件,那么,系統對于login請求,會先搜索Test-validation.xml文件,找到后并不停止搜索,而是繼續找Test-login-validation.xml文件,如果兩個都找到的話,那么對login請求的驗證為這兩個文件的總和,而不是其中的一個,如果Test繼承BaseTest的話,那么系統會先搜索BaseTest類的兩個校驗文件,然后也不停止,繼續找Test類的兩個校驗文件,然后將4個文件合并一起校驗,如果其中有沖突,那么后找到的校驗文件將覆蓋先找到的校驗文件。

    5.struts2校驗文件的兩種書寫風格

    a.字段風格

    Xml代碼 ?
  • <field?name="">??
  • ????<validator?type=""?short-circuit="">??
  • ???????... ??
  • ????</validator>??
  • </field>??
  • <field name=""><validator type="" short-circuit="">...</validator></field>



    b.非字段風格

    Xml代碼 ?
  • <validator?type=""?short-circuit="">??
  • ????<param?name="fieldName">value</param>??
  • ????... ??
  • </validator>?????
  • <validator type="" short-circuit=""><param name="fieldName">value</param>...</validator>



    其中short-circuit(短路)屬性值為boolean,默認為false,即不支持短路

    6.校驗順序玉短路原則

    注:字段校驗器指必須提供字段的校驗器,而不是指字段校驗風格,非字段同理。

    校驗順序
    a.所有非字校驗器優先于字段校驗器(所以,字段校驗器永遠不會影響非字段校驗器)
    b.所有字段與非字段風格按編寫先后順序執行

    短路原則:
    a.當非字段校驗失敗,則該字段的字段校驗器不會獲得校驗機會,但不影響其他非字段校驗
    b.字段校驗失敗,則在此失敗處代碼以下的該字段的所有字段校驗器不會獲得校驗機會

    注:短路原則是為了不讓一個字段同時出現多條驗證失敗的提示信息,如驗證date不能為空且必須大于2000-01-01,那么如果輸入的是空值且定義short-circuit="false"的話,頁面將會顯示這兩種驗證的message.

    7.配置自定義的校驗器

    將default.xml文件復制到classes目錄下,然后在里面添加自定義的校驗器配置,因為如果定義了自己的校驗器配置文件在classes目錄下,那么系統將不再會加載default.xml文件里的內容。

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的struts2类型转换+校验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。