事件
CKFinder 3 for Java 连接器提供了一组事件,可用于更改默认应用程序行为。每个事件都由其类型标识,并且可以被任意数量的侦听器监听。请求生命周期图 可能有助于您了解 CKFinder 连接器何时以及以何种顺序发出哪些事件。
要为给定类型的事件创建侦听器,您需要注册一个组件,该组件实现参数化的Listener
接口。例如,要为 RequestEvent
类型的事件创建事件侦听器,侦听器组件的存根应如下所示。
package com.cksource.ckfinder.listener;
import com.cksource.ckfinder.event.RequestEvent;
import com.cksource.ckfinder.listener.Listener;
import jakarta.inject.Named;
@Named
public class CustomListener implements Listener<RequestEvent> {
@Override
public void onApplicationEvent(RequestEvent requestEvent) {
// Processing logic.
}
}
# LoadConfigEvent
LoadConfigEvent
仅在应用程序启动时发出一次。此事件表明主要 CKFinder 配置文件刚刚加载。
# GetConfigForRequestEvent
对于每个请求,连接器都会对应用程序启动时创建的主配置对象进行深度复制,此时会发出LoadConfigEvent
。 GetConfigForRequestEvent
事件表明为当前 HTTP 请求范围创建了配置的深度副本。
此事件是根据请求动态更改连接器配置的便捷位置。您可能希望使用它,例如,更改后端根目录 定义,以便应用程序的每个用户都拥有由 CKFinder 管理的私有目录(请参阅每个用户的私有文件夹 教程)。
# RequestEvent
连接器收到 HTTP 请求时发出的事件。如果其中一个侦听器为事件对象设置了ResponseEntity
,则 HTTP 响应会立即发送到客户端。
# ResolveCommandEvent
发出此事件是为了获得Command
的具体类,以处理当前的 HTTP 请求。
# BeforeCommandEvent
在解析特定命令后,即决定应使用哪个命令类来处理当前请求时,会发出BeforeCommandEvent
。
在事件侦听器中,可以提供将在命令之前执行的任何其他代码。如果其中一个侦听器为事件对象设置了ResponseEntity
,则 HTTP 响应会立即发送到客户端。
# AfterCommandEvent
在具体的Command
返回ResponseEntity
后,会发出AfterCommandEvent
。这是 CKFinder 完成处理命令逻辑并即将将 HTTP 响应发送回客户端的时刻。
# ResponseEvent
在创建ResponseEntity
对象后,会发出ResponseEvent
。您可以使用它在组装 HTTP 响应并将其发送到客户端之前修改或替换ResponseEntity
。
# ExceptionEvent
如果在处理当前 HTTP 请求期间发生任何错误,将发出ExceptionEvent
。