WELD-001303: Нет активных контекстов для типа области видимости javax.faces.flow.FlowScoped

Я только начал делать первые шаги с FacesFlow с Glassfish 4.1 (т.е. используя Mojarra), и при вызове моего потока я получаю сообщение об ошибке

[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, и я использую следующий код на своем бине / контроллере.

@Named
@FlowScoped(value="register")
public class RegisterController implements Serializable {

У меня есть поток с именем 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, который я уже делаю

Есть идеи?

1 ответ

По крайней мере, в Glassfish 4.1 вам нужно добавить библиотеку каталогов cdi-api.jar.

Glassfish включает в себя файл Weld-osgi-bundle.jar, но для его работы также необходим cdi-api.jar, поскольку области действия bean -объектов CDI в weld-osgi... поэтому убедитесь, что у вас есть, если не здесь:

[gf_installation_path]/glassfish/modules/cdi-api.jar

Это даст вам доступ к пакетам, используемым с CDI Beans т.е. javax.enterprise.context.*

Если нет то наверное

  1. это может помочь
  2. и это

GL!

Другие вопросы по тегам