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.*
Если нет то наверное
GL!