Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 如何在运行时从观察到的事件中获取限定符_Jakarta Ee_Java Ee 6 - Fatal编程技术网

Jakarta ee 如何在运行时从观察到的事件中获取限定符

Jakarta ee 如何在运行时从观察到的事件中获取限定符,jakarta-ee,java-ee-6,Jakarta Ee,Java Ee 6,我想创建一个通用的观察者方法,它能够观察实现特定接口的任何事件,并根据应用程序启动时解析的配置文件,将用户重定向到特定页面 此页由事件类及其限定符定义。在运行时获取类很容易,但我不知道应该将InjectionPoint放在哪里来获取事件限定符,或者是否有更好的方法 比如说,我在@ApplicationScoped bean中有这个方法(Event是一个空接口,由所有具体的事件类实现): 在这一点上有可能获得pEvent的实际限定符吗 /编辑: CDI 1.1似乎以EventMetadata的形式

我想创建一个通用的观察者方法,它能够观察实现特定接口的任何事件,并根据应用程序启动时解析的配置文件,将用户重定向到特定页面

此页由事件类及其限定符定义。在运行时获取类很容易,但我不知道应该将InjectionPoint放在哪里来获取事件限定符,或者是否有更好的方法

比如说,我在@ApplicationScoped bean中有这个方法(Event是一个空接口,由所有具体的事件类实现):

在这一点上有可能获得pEvent的实际限定符吗

/编辑:

CDI 1.1似乎以EventMetadata的形式完全满足了我的需要:


遗憾的是,WebSphere8.5拥有CDI1.0,并且缺少上述类。

遗憾的是,无论是在Google上搜索还是在StackOverflow上搜索“CDI事件元数据”(或其他类似搜索)都没有返回正确的结果。 实际上,目前的问题也没有找到。。。 您需要知道确切的名称,即“EventMetaData”(不带空格)

我需要查看CDI2.0工作组文档来了解这个EventMetaData类(自CDI1.1以来就可以使用)。如何使用它的示例:

public void onLifeCycleChange(@Observes @Any Customer customer,
        EventMetadata eventMetadata) {        
    Annotation annotation = new AnnotationLiteral<Foo>() {};        
    if (eventMetadata.getQualifiers().contains(annotation)) {
        reset();
    }
}
public void onlyfecyclechange(@Observes@Any Customer,
EventMetadata事件元数据){
Annotation=newannotationliteral(){};
if(eventMetadata.getQualifiers()包含(注释)){
重置();
}
}
这个问题需要提高投票率以提高知名度(但我自己无法做到,因为缺乏声誉)

public void onLifeCycleChange(@Observes @Any Customer customer,
        EventMetadata eventMetadata) {        
    Annotation annotation = new AnnotationLiteral<Foo>() {};        
    if (eventMetadata.getQualifiers().contains(annotation)) {
        reset();
    }
}