【发布时间】:2016-11-27 03:51:23
【问题描述】:
刚开始使用 Glassfish 4.1(即使用 Mojarra)使用 FacesFlow 进行我的第一步,当调用我的流程时,我收到一个名为
的错误[SEVERE] [] [javax.enterprise.resource.webcontainer.jsf.application] ... Error Rendering View[/register/register.xhtml]
org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.faces.flow.FlowScoped
at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:708)
正如我在网络上看到的那样,其他几个人也有这个错误,但对其他人有效的解决方案对我不起作用(见下文)。
我也尝试了@SessionScoped,它有效。所以和@FlowScoped有关。
对于我在用来加快速度的书中所读到的内容,我应该可以从编码和配置结束,因为根据 API @FlowScoped 是基于 CDI 的,我在我的支持 bean/控制器中使用以下代码.
@Named
@FlowScoped(value="register")
public class RegisterController implements Serializable {
我有一个名为 register 的流程,其页面位于目录 /register 中,流程的第一页名为 register.xhtml
在 sn-p 之后,我尝试了 register/register-flow.xml 配置文件和 WEB-INF/faces-config.xml 均未成功。
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
<flow-definition id="register">
<flow-return id="overview">
<from-outcome>/index</from-outcome>
</flow-return>
</flow-definition>
</faces-config>
到目前为止我尝试了什么:
我发现一个帖子建议<Context antiJARLocking="true" path="/PROJEST_NAME"/> 可以解决问题,但在谷歌搜索标签后发现它是一个过时的 Tomcat 标签。
将@Named 更改为@ManagedBean 并没有像一页上的建议那样真正有帮助。我可以打开页面,但在调用流程的下一页时,控制器类中的数据将不可用。但我猜@ManagedBean 不应该真正起作用,因为@FlowScoped 是基于CDI 的。
另一个帖子建议确保启用javax.faces.CLIENT_WINDOW_MODE。我尝试通过将以下内容添加到我的 web.xml 但没有成功
<context-param>
<param-name>javax.faces.CLIENT_WINDOW_MODE</param-name>
<param-value>url</param-value>
</context-param>
另一个建议使用我已经使用的 Glassfish 4.x
有什么想法吗?
【问题讨论】:
-
你有可以重现这个的示例应用吗?
标签: jsf cdi glassfish-4.1 faces-flow