Jsf WELD-001303直接访问时作用域类型javax.faces.flow.FlowScoped没有活动上下文
从本周开始,我一直在玩JSF2.2(MyFacesImplementation v2.2.6和Weld v2.2.7.Final for CDI),我面临以下问题:我无法直接与我的兄弟访问流入口点 例如: My webapp包含一个名为“create”的流,该流允许在数据库中创建记录。 我希望能够输入URLJsf 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范围
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>