gpt4 book ai didi

java - 人脸流不适用于@Named

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:48 26 4
gpt4 key购买 nike

我只是在玩转 Java EE7 教程中的 simple-flow 示例。它有以下 bean:

import javax.faces.bean.ManagedBean;

@ManagedBean
public class FlowScope {

private String value;

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}
}

和以下作用域目录结构:

simple-flow
simple-flow.xhtml
simple-flow-flow.xhtml ;; this file is empty
simple-flow-return.xhml

只要请求作用域 bean 使用 javax.faces.bean.ManagedBean 注释,它就可以工作。但如果我使用 @Named,它就会停止工作。由于将来可能会删除 javax.faces.bean.ManagedBean 注释,因此我想知道如何在不使用 ManagedBean 注释的情况下使其工作。

顺便说一句:我使用 JBoss Wildfly 作为容器。

问候 罗杰

最佳答案

如果您使用@Named,您的bean 将由CDI 管理。为此,您需要在项目中实现 CDI。如果您在 Java EE 6(或 7,如果可用)上运行您的应用程序,默认情况下可以使用 TomEE、Glassfish 或 JBoss CDI 等容器。如果您只使用像 Tomcat 或 Jetty 这样的 servlet 容器,则必须自己添加像 Apache OpenWebBeans 或 Weld 这样的 CDI 实现(或者考虑使用例如 TomEE)。

要获得 CDI 请求作用域 bean,您必须像这样注释您的类:

@javax.inject.Named
@javax.enterprise.context.RequestScoped
public class MyBean {
...
}

JSF 2.2 还提供带有 CDI 的流作用域 bean。绑定(bind)到流 simple-flow 的流作用域 bean 看起来像这样:

@javax.inject.Named
@javax.faces.flow.FlowScoped(value="simple-flow")
public class MyBean {
...
}

关于java - 人脸流不适用于@Named,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23033705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com