[
https://issues.apache.org/jira/browse/WW-4105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15980460#comment-15980460
]
ASF GitHub Bot commented on WW-4105:
------------------------------------
Github user yasserzamani commented on the issue:
https://github.com/apache/struts/pull/133
> Remember that issue that you've submitted to security list? All actions
are affected. With this proposal bean attribute must be added to every action
configuration in the application.
If this proposal was made user forced to use `bean` attribute for every
action, I myself was first person who rejects it. If you think so, then you are
right to be worry.
Yes I remember the issue which I submitted to security list. Maybe I
misunderstood something but let count it:
1. When action is not a bean, is not proxied, e.g. `<action
class=me.yz.Action1"`: Then
`objectfactory.getInstanceClass(actionCondif.getClassName())` returns
`me.yz.Action1` and my proposal behaves as current S2.
2. When action is not a bean, but is proxied, e.g. `<action
class=me.yz.Action1"` and `<aop:pointcut id=actionExecute
expression=execution(String me.yz.Action1.execute())`: Same as (1)
`objectfactory.getInstanceClass(actionCondif.getClassName())` returns
`me.yz.Action1` and my proposal behaves as current S2.
3. When action is a bean, but is not proxied, e.g. `<action
class=myAction1"` and `<bean name=myAction1 class=me.yz.Action1`: Same as (1)
`objectfactory.getInstanceClass(actionCondif.getClassName())` returns
`me.yz.Action1` and my proposal behaves as current S2.
4. AND When action is a bean, and is proxied, e.g. `<action
class=myAction1"` and `<bean name=myAction1 class=me.yz.Action1` and
`<aop:pointcut id=actionExecute expression=execution(String
me.yz.Action1.execute())`: Here
`objectfactory.getInstanceClass(actionCondif.getClassName())` returns something
different than `me.yz.Action1` and my proposal warns user that runtime and
config time class of the action are not same and recommends the usage of `bean`
attribute i.e. rewrite config to `<action class=me.yz.Action1 bean=myAction1"`.
So only number 4 needs protection and does not fail on not usage of `bean`
and just warns a log. Did I missed something?
Thanks for your time!
> Struts2 raise java.lang.ClassCastException when Result type is chain
> ---------------------------------------------------------------------
>
> Key: WW-4105
> URL: https://issues.apache.org/jira/browse/WW-4105
> Project: Struts 2
> Issue Type: Bug
> Components: Core Interceptors
> Affects Versions: 2.3.14.3
> Environment: tomcat6 struts2.3.*
> Reporter: zhouyong
> Fix For: 2.5.x
>
> Attachments: lib.zip.001, lib.zip.002, lib.zip.003, lib.zip.004,
> lib.zip.005, lib.zip.006, lib.zip.007, lib.zip.008, struts2-debug.tar.gz,
> test.zip, WW-4105.patch
>
>
> java.lang.ClassCastException: A action cannot be cast to B action when A
> chain to B.
> ChainingInterceptor.java has a bug in intercept function when Result type is
> chain.
> Intercept function of ChainingInterceptor will change action member of
> DefaultActionInvocation class. And invokeAction of DefaultActionInvocation
> will fail in line 450.
> My action class has a annotation. It is
> org.springframework.transaction.annotation.Transactional. Action work good
> if it has not org.springframework.transaction.annotation.Transactional
> AtestAction.java:
> {code:java}
> package demo.action;
> import org.apache.struts2.convention.annotation.Action;
> import org.apache.struts2.convention.annotation.ParentPackage;
> import org.apache.struts2.convention.annotation.Result;
> import org.apache.struts2.convention.annotation.Results;
> import org.springframework.context.annotation.Scope;
> import org.springframework.stereotype.Service;
> import org.springframework.transaction.annotation.Transactional;
> @Transactional
> @ParentPackage(value="swordlite")
> @Service("AtestAction")
> @Scope(value = "prototype")
> @Results( {
> @Result(name = "test", location = "testb", type = "chain",
> params = {
> "defineId", "${_defineId}",
> "rp", "${_resultPage}"}
> )
> })
> public class AtestAction {
> @Action(value = "/testa")
> public String run() throws Exception
> { return "test"; }
> }
> BtestAction.java:
> import org.apache.struts2.convention.annotation.Action;
> import org.apache.struts2.convention.annotation.ParentPackage;
> import org.apache.struts2.convention.annotation.Result;
> import org.apache.struts2.convention.annotation.Results;
> import org.springframework.context.annotation.Scope;
> import org.springframework.stereotype.Service;
> import org.springframework.transaction.annotation.Transactional;
> @Transactional
> @ParentPackage(value="swordlite")
> @Service("BtestAction")
> @Scope(value="prototype")
> @Results({
> @Result(name="ok", location="/ok.jsp", type="dispatcher"),
> })
> public class BtestAction {
> @Action(value = "/testb")
> public String run() throws Exception
> { return "ok"; }
> }
> {code}
> request: http://localhost:8080/test/testa.action
> raise error: java.lang.ClassCastException: demo.action.AtestAction cannot be
> cast to demo.action.BtestAction
> spring config file: applicationContext.xml
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:aop="http://www.springframework.org/schema/aop"
> xmlns:tx="http://www.springframework.org/schema/tx"
> xmlns:context="http://www.springframework.org/schema/context"
> xmlns:util="http://www.springframework.org/schema/util"
> xmlns="http://www.springframework.org/schema/p"
> xsi:schemaLocation="http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
> http://www.springframework.org/schema/aop
> http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
> http://www.springframework.org/schema/tx
> http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
> http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context-2.5.xsd
> http://www.springframework.org/schema/util
> http://www.springframework.org/schema/util/spring-util-2.5.xsd">
> <context:component-scan base-package="..action,.**.spring" />
> <context:annotation-config />
> <aop:aspectj-autoproxy proxy-target-class="true"/>
> <bean id="propertyConfigurer"
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
> <property name="locations">
> <list>
> <value>WEB-INF/config/db.properties</value>
> <value>WEB-INF/config/hibernate.properties</value>
> </list>
> </property>
> </bean>
> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
> destroy-method="close">
> <property name="driverClass" value="${database.working.driver}"></property>
> <property name="jdbcUrl" value="${database.working.url}"></property>
> <property name="user" value="${database.working.user}"></property>
> <property name="password" value="${database.working.password}"></property>
> <property name="maxPoolSize" value="${database.working.poolsize}"></property>
> <property name="minPoolSize" value="1"></property>
> <property name="initialPoolSize" value="1"></property>
> <property name="maxIdleTime" value="20"></property>
> </bean>
> <bean id="sessionFactory"
> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
> <property name="dataSource" ref="dataSource" />
> <property name="packagesToScan">
> <list>
> <value>.*.model</value>
> </list>
> </property>
> <property name="hibernateProperties">
> <props>
> <prop key="hibernate.dialect">${hibernate.dialect}</prop>
> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
> <prop key="hibernate.hbm2ddl.auto">none</prop>
> </props>
> </property>
> </bean>
> <bean id="transactionManager"
> class="org.springframework.orm.hibernate3.HibernateTransactionManager">
> <property name="sessionFactory" ref="sessionFactory"></property>
> </bean>
> <tx:annotation-driven transaction-manager="transactionManager" />
> </beans>
> {code}
> struts config file: struts.xml
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE struts PUBLIC
> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
> "http://struts.apache.org/dtds/struts-2.3.dtd">
> <struts>
> <!-- <constant name="struts.objectFactory" value="spring" /> -->
> <constant name="struts.objectFactory"
> value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
> <constant name="struts.devMode" value="false" />
> <package name="swordlite" namespace="/" extends="struts-default">
> <global-results>
> <result name="myerror">/mrg/error.jsp</result>
> <result name="re2Editpage">/mrg/re2Editpage.jsp</result>
> </global-results>
> <global-exception-mappings>
> <exception-mapping result="re2Editpage"
> exception="org.hibernate.PropertyValueException"></exception-mapping>
> </global-exception-mappings>
> </package>
> </struts>
> {code}
> stacktrace:
> {code:java}
> java.lang.ClassCastException: demo.action.AtestAction cannot be cast to
> demo.action.BtestAction
> at
> demo.action.BtestAction$$FastClassByCGLIB$$4c9ad5d.invoke(<generated>)
> ~[com.springsource.net.sf.cglib-2.2.0.jar:na]
> at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
> ~[com.springsource.net.sf.cglib-2.2.0.jar:na]
> at
> org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
> ~[org.springframework.transaction-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at demo.action.BtestAction$$EnhancerByCGLIB$$cb3cf5cd.run(<generated>)
> ~[com.springsource.net.sf.cglib-2.2.0.jar:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.6.0_29]
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.6.0_29]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.6.0_29]
> at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_29]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult.java:233)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
> [struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
> [catalina.jar:6.0.35]
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
> [tomcat-coyote.jar:6.0.35]
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
> [tomcat-coyote.jar:6.0.35]
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> [tomcat-coyote.jar:6.0.35]
> at java.lang.Thread.run(Unknown Source) [na:1.6.0_29]
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)