[已解决] 无法找到 ref-name 引用的拦截器类

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(241)   2023-06-26 07:54:18

我是在为 @InterceptorRef 示例 编写代码时了解到此功能的。我必须在 struts.xml 文件中声明拦截器定义,而我想使用带有注释的拦截器。第一次尝试时,它失败并出现以下错误:

Unable to load configuration. - [unknown location]
	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70)
	at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
Caused by: Unable to find interceptor class referenced by ref-name customStack - [unknown location]
	at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:63)
	at org.apache.struts2.convention.DefaultInterceptorMapBuilder.buildInterceptorList(DefaultInterceptorMapBuilder.java:95)
	at org.apache.struts2.convention.DefaultInterceptorMapBuilder.build(DefaultInterceptorMapBuilder.java:86)
	at org.apache.struts2.convention.DefaultInterceptorMapBuilder.build(DefaultInterceptorMapBuilder.java:64)

原因:

默认情况下,Convention 插件使用它自己的包 convention-default,它不包含您在 struts.xml 中定义的包。这意味着约定放置您的操作的包不会扩展定义拦截器的包。

Random exceptions

解决方案:

要改变你有两个选择:

1) @ParentPackage注解的使用
2) 在struts.xml中定义

例如

<struts>
	<package name="default" namespace="/" extends="struts-default">
		<interceptors>	
			<interceptor name="demoCustomInterceptor" class="com.cundage.struts2.example.web.DemoCustomInterceptor" />
			<interceptor-stack name="customStack">
	     		<interceptor-ref name="demoCustomInterceptor"/>
				<interceptor-ref name="defaultStack" />
        	</interceptor-stack>
	    </interceptors>	    
	</package>
	
	<constant name="struts.convention.result.path" value="/WEB-INF/jsp/" />
	<constant name="struts.devMode" value="true" />
	<constant name="struts.action.extension" value="action," />
	<constant name="struts.custom.i18n.resources" value="test" />
	
	<constant name="struts.convention.default.parent.package" value="default"/>
	
</struts>

这将解决问题。

快乐学习!!

地址:https://www.cundage.com/article/solved-unable-to-find-interceptor-class-referenced-by-ref-name.html

相关阅读

在之前的帖子中,我们学习了hello world 应用程序和struts 2 应用程序的设置结果路径。现在,在这篇文章中,我将给出一个使用注释的自定义或用户定义的拦截器配置示例。 拦截器是一个类...
我是在为 @InterceptorRef 示例 编写代码时了解到此功能的。我必须在 struts.xml 文件中声明拦截器定义,而我想使用带有注释的拦截器。第一次尝试时,它失败并出现以下错误: ...
在我之前的帖子中,我写了很多关于JAX-RS RESTEasy、Spring 3、&lt; span&gtl;Hibernate 和其他 java 框架,例如maven 或 junit 4。我还...
之前,我介绍了spring 3 + hibernate 集成 示例和struts 2 hello world 示例。在本教程中,我将讨论在将 spring 框架与 struts 与 hibern...
这里的result path是指JSP文件或其他视图文件的位置,Struts 2在执行Action类中的代码后将解析这些文件。这些结果路径在 Action 类顶部的 @Result 注释的“位置...
如果您刚刚开始编写 struts 2 应用程序,并且正在配置它,那么您可能会遇到此异常。完整的堆栈跟踪将如下所示: SEVERE: Dispatcher initialization faile...
学习使用 Retrofit2 和 OkHttp 库。 1. Call.execute() 和 Call.enqueue() 方法 在 Retrofit 2 中,所有请求都被包装到 retrofi...
虽然我们可以轻松地为不同的客户端按需创建 Retrofit 实例,但是拥有专用的工厂方法或服务生成器方法绝对是可取的。 在这个服务生成器中,我们可以集中位置添加/修改身份验证、日志记录 和错误处...
正如您所了解的 servlet 过滤器,它们可以预先处理和后处理它们所服务的每个 Web 请求——在由该 servlet 处理之前和之后。以类似的方式,您可以在 Spring Web 应用程序中...
In this Spring security oauth2 tutorial, learn to build an 授权服务器 to authenticate your identity to...