Unable to find a result type for extension [...] in location attribute

来源:互联网 发布:闲鱼可以淘宝介入吗 编辑:程序博客网 时间:2024/06/05 07:13

原因大概有很多种,我只说我碰到的情况。

项目用的是spring+struts2+jpa,用maven管理,jsp放在java/main/webapp/WEB-INF/content中。

一般action会设置目录,但有几个根目录下的jsp,如login.jsp,main.jsp,nopermisson.jsp,对应的是设置了namespace为"/"的action。

这里说的就是nopermission.action。

我有一个通用的action文件:CrudAction,实现一些基本的action动作,其他的action大多继承自它。

在这个CrudAction中,定义了一个名为nopermission的result,指向根目录下的nopermission.action,初始写法如下:

@Results({@Result(name = "nopermission", location = "/nopermission.action") })public abstract class CrudAction<T, TService extends ICrudService<T>> extendsCrudActionSupport<T> {public static final String NOPERMISSION = "nopermission";……} 
运行tomcat,开始报错:
2013-05-11 16:48:18,483 [main] ERROR [org.apache.struts2.dispatcher.Dispatcher] - Dispatcher initialization failedUnable to load configuration. - [unknown location]at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390)at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:436)at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)at org.apache.catalina.startup.Embedded.start(Embedded.java:825)at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:601)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)Caused by: Unable to find a result type for extension [action] in location attribute [/nopermission.action]. - [unknown location]at org.apache.struts2.convention.DefaultResultMapBuilder$ResultInfo.determineType(DefaultResultMapBuilder.java:513)at org.apache.struts2.convention.DefaultResultMapBuilder$ResultInfo.<init>(DefaultResultMapBuilder.java:485)at org.apache.struts2.convention.DefaultResultMapBuilder.createFromAnnotations(DefaultResultMapBuilder.java:410)at org.apache.struts2.convention.DefaultResultMapBuilder.createResultsFromAnnotations(DefaultResultMapBuilder.java:220)at org.apache.struts2.convention.DefaultResultMapBuilder.build(DefaultResultMapBuilder.java:196)at org.apache.struts2.convention.PackageBasedActionConfigBuilder.createActionConfig(PackageBasedActionConfigBuilder.java:864)at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildConfiguration(PackageBasedActionConfigBuilder.java:636)at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:335)at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:215)at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)... 37 more五月 11, 2013 4:48:18 下午 org.apache.catalina.core.StandardContext filterStart严重: Exception starting filter struts2FilterUnable to load configuration. - [unknown location]at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:449)at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)at org.apache.catalina.startup.Embedded.start(Embedded.java:825)at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:601)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)Caused by: Unable to load configuration. - [unknown location]at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390)at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:436)... 35 moreCaused by: Unable to find a result type for extension [action] in location attribute [/nopermission.action]. - [unknown location]at org.apache.struts2.convention.DefaultResultMapBuilder$ResultInfo.determineType(DefaultResultMapBuilder.java:513)at org.apache.struts2.convention.DefaultResultMapBuilder$ResultInfo.<init>(DefaultResultMapBuilder.java:485)at org.apache.struts2.convention.DefaultResultMapBuilder.createFromAnnotations(DefaultResultMapBuilder.java:410)at org.apache.struts2.convention.DefaultResultMapBuilder.createResultsFromAnnotations(DefaultResultMapBuilder.java:220)at org.apache.struts2.convention.DefaultResultMapBuilder.build(DefaultResultMapBuilder.java:196)at org.apache.struts2.convention.PackageBasedActionConfigBuilder.createActionConfig(PackageBasedActionConfigBuilder.java:864)at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildConfiguration(PackageBasedActionConfigBuilder.java:636)at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:335)at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:215)at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)... 37 more

然后,我改成下面的,就好了:

@Results({@Result(name = "nopermission", location = "/nopermission.action", type = "redirect") })public abstract class CrudAction<T, TService extends ICrudService<T>> extendsCrudActionSupport<T> {public static final String NOPERMISSION = "nopermission";……}

action的默认结果类型是dispatcher,这种方式的location只能是页面,不能是另一个action

以下两个网址有对这个问题的简单说明:

http://hi.baidu.com/foreverfly8/item/4bfae9cc04abb80c0bd93a79

http://blog.sina.com.cn/s/blog_56b7aaa10100eqs4.html


原创粉丝点击