Struts2.5.12 - 使用ActionSupport

时间:2017-07-27 10:02:20

标签: java configuration nullpointerexception struts2


我正在将项目从Struts 2.3.3迁移到Struts 2.5.12,并且在使用NullPointerException类中的getText方法时看到ActionSupport

我的动作类扩展了ActionSupport类。我的package.properties文件也打包在war文件中。

我的动作类看起来像:

public class MyAction extends ActionSupport {
    private List<String> months = new ArrayList<>(
            Arrays.asList(getText("date.month.default"), "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"));
}

在package.properties文件中我有

date.month.default=MM

当我的动作类的bean被实例化时,我看到了以下异常。有谁知道我在这里做错了什么?

ERROR DefaultDispatcherErrorHandler Exception occurred during processing request: Unable to instantiate Action, entryAction,  defined for 'entry' in namespace '/'Error creating bean with name 'entryAction' defined in "/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/my/company/member/web/action/entry/spring-context.xml": Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException
 Unable to instantiate Action, entryAction,  defined for 'entry' in namespace '/'Error creating bean with name 'entryAction' defined in "/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/my/company/member/web/action/entry/spring-context.xml": Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException - action - vfs:/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/struts-default.xml:133:44
    at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318)
    at com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:204)
    at org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:62)
    at org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)
    at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81)
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:285)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:264)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:175)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:792)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entryAction' defined in "/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/my/company/member/web/action/entry/spring-context.xml": Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1075)
    at com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:159)
    at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:172)
    at com.opensymphony.xwork2.factory.DefaultActionFactory.buildAction(DefaultActionFactory.java:22)
    at com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:137)
    at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
    ... 37 more
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:141)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:74)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958)
    ... 48 more
Caused by: java.lang.NullPointerException
    at com.opensymphony.xwork2.ActionSupport.getTextProvider(ActionSupport.java:278)
    at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:83)
    at my.company.member.web.action.MyAction.<init>(MyAction.java:95)
    at my.company.member.web.action.entry.EntryAction.<init>(EntryAction.java:22)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)
    ... 50 more

项目结构是:
enter image description here

构建的WAR结构如下:
enter image description here

下面的jar文件被添加到WAR文件的WEB-INF / lib中:
classworlds-1.1.jar
com.springsource.org.aopalliance-1.0.0.jar
公地模棱两可-0.8.jar
公共链1.2.jar
公共沼气池-1.8.jar
公地文件上传-1.2.1.jar
公地httpclient的-3.1.jar
公地IO-2.4.jar
公地lang3-3.6.jar
公地验证-1.3.1.jar
freemarker的-2.3.23.jar
GSON-2.1.jar
HttpClient的-4.3 beta1.jar
HttpClient的-OSGi的4.3.jar
的HttpCore-4.2.2.jar
Javassist进行-3.18.0-GA.jar
JAXRPC-API-1.1.jar
JCIFS-1.3.17.jar
log4j的-API-2.8.2.jar
OGNL-3.1.12.jar
口 - 2.0.8.jar
串行-2.7.1.jar
弹簧AOP-3.0.5.RELEASE.jar
弹簧-ASM-3.0.5.RELEASE.jar
弹簧豆,3.0.5.RELEASE.jar
弹簧上下文3.0.5.RELEASE.jar
弹簧上下文支持,3.0.5.RELEASE.jar
弹簧芯3.0.5.RELEASE.jar
弹簧表达-3.0.5.RELEASE.jar
弹簧JDBC-3.0.5.RELEASE.jar
弹簧JMS-3.0.5.RELEASE.jar
弹簧ORM-3.0.5.RELEASE.jar
弹簧远程-2.0.8.jar
弹簧-TX-3.0.5.RELEASE.jar
弹簧网络3.0.5.RELEASE.jar
Struts2的核心 - 2.5.12.jar
struts2的-JSON-插件,2.5.12.jar
struts2的 - 弹簧 - 插件-2.5.12.jar
Struts2的瓷砖,插件,2.5.12.jar
瓷砖-API-3.0.7.jar
瓷砖-autotag核心运行时,1.2.jar
瓷砖核-3.0.7.jar
瓷砖-EL-3.0.7.jar
瓷砖-的freemarker-3.0.7.jar
瓷砖-JSP-3.0.7.jar
瓷砖-OGNL-3.0.7.jar
瓦片请求-API-1.0.6.jar
瓦片-请求的freemarker-1.0.6.jar
瓦片-请求的jsp-1.0.6.jar
瓦片请求-servlet的1.0.6.jar
瓷砖-的servlet-3.0.7.jar
瓷砖,模板3.0.7.jar
WSDL4J-1.5.1.jar
XML的API-1.3.02.jar

1 个答案:

答案 0 :(得分:1)

您不应使用名称为struts-default.xml的文件。这是默认加载的配置文件。应用程序的默认配置文件名是struts.xml

重命名此文件

struts-default.xml

struts.xml