刚开始使用 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
以下片段我尝试了作为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
有任何想法吗?