type="com.opensymphony.xwork2.conversion.ObjectTypeDeterminer" name="notiger" class="com.opensymphony.xwork2 ="com.opensymphony.xwork2.conversion.ConversionFileProcessor" name="struts" class="com.opensymphony.xwork2 type="com.opensymphony.xwork2.conversion.impl.StringConverter" name="struts" class="com.opensymphony.xwork2 "com.opensymphony.xwork2.TextProvider" name="system" class="com.opensymphony.xwork2.DefaultTextProvider /> <bean class="com.<em>opensymphony</em>.xwork2.ognl.OgnlUtil" /> <bean type="com.<em>opensymphony</em>.xwork2
.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348) at com.opensymphony.xwork2 (MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling (DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143) at com.opensymphony.xwork2 at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143) at com.opensymphony.xwork2
.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404) at com.opensymphony.xwork2. com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2
未解决的报错问题 2018-07-05 17:12:37,135 ERROR [com.opensymphony.xwork2.interceptor.ParametersInterceptor] - :98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java :98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) :191) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
:170) at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:148) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:318 :98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) :98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) :191) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
) for (com.opensymphony.xwork2.conversion.impl.DateConverter) 2014-7-10 23:28:26 com.opensymphony.xwork2 ) for (com.opensymphony.xwork2.conversion.impl.StringConverter) 2014-7-10 23:28:26 com.opensymphony.xwork2 ) for (com.opensymphony.xwork2.conversion.ConversionFileProcessor) 2014-7-10 23:28:26 com.opensymphony.xwork2 ) for (com.opensymphony.xwork2.conversion.TypeConverterCreator) 2014-7-10 23:28:26 com.opensymphony.xwork2 ) for (com.opensymphony.xwork2.conversion.ObjectTypeDeterminer) 2014-7-10 23:28:26 com.opensymphony.xwork2
" /> < interceptor name ="chain" class ="com.<em>opensymphony</em>.xwork2.interceptor.ChainingInterceptor" /> " /> < interceptor name ="model-driven" class ="com.<em>opensymphony</em>.xwork2.interceptor.ModelDrivenInterceptor " /> < interceptor name ="params" class ="com.<em>opensymphony</em>.xwork2.interceptor.ParametersInterceptor" /> < interceptor name ="prepare" class ="com.<em>opensymphony</em>.xwork2.interceptor.PrepareInterceptor" /> .validator.ValidationInterceptor" /> < interceptor name ="workflow" class ="com.<em>opensymphony</em>.xwork2.
.inject.ContainerImpl$5.create(ContainerImpl.java:311) 10 at com.opensymphony.xwork2.inject.ContainerImpl .inject.util.ReferenceCache.internalCreate(ReferenceCache.java:76) 15 at com.opensymphony.xwork2. :204) 18 at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51) 19 at com.opensymphony.xwork2 :484) 22 at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:580) 23 at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:484) 24 at com.opensymphony.xwork2
”; public static final String SESSION = “com.opensymphony.xwork2.ActionContext.session”; public static final String APPLICATION = “com.opensymphony.xwork2.ActionContext.application”; public static final String PARAMETERS = “com.opensymphony.xwork2.ActionContext.parameters”; public static final String LOCALE = “com.opensymphony.xwork2.ActionContext.locale”; public static final String TYPE_CONVERTER = “com.opensymphony.xwork2 .ActionContext.typeConverter”; public static final String ACTION_INVOCATION = “com.opensymphony.xwork2
-- 测算执行时间 --> 必须有传递属性这个拦截器 运行输出日志如下 2019-03-24 03:50:19.231 [DEBUG] com.opensymphony.xwork2.ognl.SecurityMemberAccess.isAccessible java.lang.String com.ming.HelloWorldAction.getName(), property: name] 2019-03-24 03:50:19.232 [INFO ] com.opensymphony.xwork2 可以看到这个action一共运行耗时12ms 自定义拦截器 需要继承该抽象类,并实现其方法 即 com.opensymphony.xwork2.interceptor.AbstractInterceptor 抽象类 代码如下 package com.ming; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2 .ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import org.apache.logging.log4j.LogManager
package com.rk.strut.i_validation; import com.opensymphony.xwork2.ActionSupport; public class StudentAction 系统提供了能满足大部分验证需求的校验器,可在xwork-core-2.X.X.jar的com.opensymphony.xwork2.validator.validators下的default.xml中找到 </message> </field-validator> 4、补充 在xwork-core-2.3.29.jar包下com/opensymphony/xwork2/validator/validators .validator.validators.RequiredStringValidator"/> <validator name="int" class="com.<em>opensymphony</em>.xwork2 "/> <validator name="regex" class="com.<em>opensymphony</em>.xwork2.validator.validators.RegexFieldValidator
(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). (#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). (#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
.ognl.accessor), XWorkMethodAccessor.java callMethod:90, XWorkMethodAccessor (com.opensymphony.xwork2 (com.opensymphony.xwork2), DefaultActionInvocation.java invokeActionOnly:293, DefaultActionInvocation (com.opensymphony.xwork2), DefaultActionInvocation.java invoke:254, DefaultActionInvocation (com.opensymphony.xwork2 ), DefaultActionInvocation.java doIntercept:181, DefaultWorkflowInterceptor (com.opensymphony.xwork2. ), PrepareInterceptor.java intercept:99, MethodFilterInterceptor (com.opensymphony.xwork2.interceptor
.Action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public .Action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public .Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class StudentAction3 extends ActionSupport implements .Action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import
.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:143) at com.opensymphony.xwork2 .config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:110) at com.opensymphony.xwork2 .config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:168) at com.opensymphony.xwork2 .config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:110) at com.opensymphony.xwork2 .config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:168) at com.opensymphony.xwork2
{com.opensymphony.xwork2.ActionContext.locale=zh_CN, request={struts.actionMapping=ActionMapping{name .ActionContext.actionInvocation=com.opensymphony.xwork2.DefaultActionInvocation@742c6377, session={}, xwork.NullHandler.createNullObjects=false, com.opensymphony.xwork2.util.ValueStack.ValueStack=com.opensymphony.xwork2 @4cb71783, com.opensymphony.xwork2.ActionContext.container=com.opensymphony.xwork2.inject.ContainerImpl @7888eafe, com.opensymphony.xwork2.ActionContext.parameters={}, com.opensymphony.xwork2.dispatcher.ServletContext
(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). (#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
%28%40com.opensymphony.xwork2.ognl.OgnlUtil%40class%29%29.%28%23ou.getExcludedPackageNames%28%29.clear (#cr=#ct['com.opensymphony.xwork2.ActionContext.container']). (#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). (#cr=#ct['com.opensymphony.xwork2.ActionContext.container']). (#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).
Struts2拦截器基础 在Struts2框架中,拦截器是一个Java类,实现了com.opensymphony.xwork2.interceptor.Interceptor接口。 自定义拦截器的实现 步骤一:创建自定义拦截器类 首先,我们需要创建一个实现了com.opensymphony.xwork2.interceptor.Interceptor接口的Java类,作为自定义拦截器 package com.example.interceptors; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2 package com.example.interceptors; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2 .ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2