如何在应用程序中使用新的@ClientWindowScoped注解?

问题描述 投票:0回答:2

Jakarta Faces 4.0 引入了新的

@ClientWindowScoped
注释。然而,在搜索规范和实现时,我没有找到任何在应用程序中实际使用它的示例。

也许不仅可以用这个注解来注解一个bean,还可以通过一些提供的API来操作

jfwid
请求参数。如果是这样,任何人都可以提供一个如何使用它的简单示例或指出一篇文章吗?

jsf
2个回答
4
投票

通常您只需要在 web.xml 中激活 ClientWindowScope 即可:

<context-param>
    <param-name>jakarta.faces.CLIENT_WINDOW_MODE</param-name>
    <param-value>url</param-value>
</context-param>

使用 Wildfly 27/28.0.1,我需要在 beans.xml 中使用 bean-discovery-mode all

<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd"
   bean-discovery-mode="all"/>

也许这是一个错误,因为 ClientWindowScope 是用 NormalScope 注释的,这确实是一个 Bean 定义注释

或者保留 bean-discovery-mode annotated(默认)并使用 ClientWindowScoped 注释创建 sterotype

@ClientWindowScoped
@Stereotype
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface WindowScoped {    }

现在您可以在默认(带注释的)bean 发现模式下使用 add @WindowScoped

如果您使用 PrimeFaces,您还可以查看 PrimeClientWindowLifecycleFactory,它确保在首页加载时强制使用 jfwid url 参数,并且生成的链接将在新浏览器中启动或在新窗口会话中启动。


0
投票

有人有 Spring Boot 和 Joinfaces 中 @ClientWindowScoped 的工作示例实现吗? “org.primefaces.clientwindow.PrimeClientWindowLifecycleFactory”可靠地为我生成“jfwid”,但我的 Spring Boot 带注释的组件的行为类似于 @SessionScope 而不是 @ClientWindowScoped。

© www.soinside.com 2019 - 2024. All rights reserved.