Jsf WELD-001303直接访问时作用域类型javax.faces.flow.FlowScoped没有活动上下文

Jsf WELD-001303直接访问时作用域类型javax.faces.flow.FlowScoped没有活动上下文,jsf,weld,flow-scope,Jsf,Weld,Flow Scope,从本周开始,我一直在玩JSF2.2(MyFacesImplementation v2.2.6和Weld v2.2.7.Final for CDI),我面临以下问题:我无法直接与我的兄弟访问流入口点 例如: My webapp包含一个名为“create”的流,该流允许在数据库中创建记录。 我希望能够输入URLhttp://my.domain/webapp/create/create.jsf在我的浏览器地址栏中 当我这样做时,页面无法正确呈现,服务器中会出现以下日志 日志:WELD-001303范围

从本周开始,我一直在玩JSF2.2(MyFacesImplementation v2.2.6和Weld v2.2.7.Final for CDI),我面临以下问题:我无法直接与我的兄弟访问流入口点

例如:

My webapp包含一个名为“create”的流,该流允许在数据库中创建记录。 我希望能够输入URL
http://my.domain/webapp/create/create.jsf
在我的浏览器地址栏中

当我这样做时,页面无法正确呈现,服务器中会出现以下日志

日志:WELD-001303范围类型无活动上下文 javax.faces.flow.FlowScoped

我做错了什么?难道不可能吗?我希望是这样

当我在流之外创建一个页面时,我没有任何问题,只有一个commandButton重定向到流入口点。 当我查看源代码时,似乎已经创建了流的id,尽管流尚未访问。 这让我觉得Flowscope的设计很糟糕。 此外,这样的变通(启动程序页面)破坏了我自己的设计和最终用户体验

可用的解决方案是什么

以下是一些示例代码:

创建.xhtml

<h1>Create record</h1>
<h:form id="create-record" prependId="false">
    <label for="name">Name</label>
    <h:inputText id="name" value="#{createController.name}" />
    <h:commandButton title="Abandon" value="Abandon" id="abandon" action="returnFromCreate" immediate="true" />
    <h:commandButton title="Validate" value="Validate" id="validate" action="#{createController.create()}" />
</h:form>
xhtml“启动器”



create-flow.xml仅包含一个“flow return”指令。

该异常表示您已导航到该页面,但您不在流中。您应该检查链接是否真的进入流,但在此之前,请检查是否启用了客户端窗口api(javax.faces.client\u window\u模式),因为faces流依赖于此功能。MyFaces 2.2 Faces流实现工作得非常好,即使在Mojarra的实现无法处理的嵌套流等复杂情况下,也是符合规范的


在本文中,有一些关于JSF2.2特性的好例子。这些示例适用于JSF实现MyFaces和Mojarra。检查示例中的面流是否打开

你需要发布一些示例代码我更新了我的初始帖子。
package my.company;

import java.io.Serializable;

import javax.faces.flow.FlowScoped;
import javax.inject.Inject;
import javax.inject.Named;

@Named
@FlowScoped("create")
public class CreateController implements Serializable {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String create() {
        // TODO
        return "returnFromCreate";
    }
}
<h:form>
    <h:commandButton action="create" value="Go" />
</h:form>