Apache MyFaces CODI PageBean: "Аргумент bean не должен быть нулевым"
В настоящее время я немного экспериментирую с Apache MyFaces CODI. Мне удалось создать простую рабочую Typesafe-Navigation, используя @Page и метод действия, который возвращает класс.
Однако, когда я добавляю @PageBean-Annotation, например, с MyPageBean.class, при попытке перейти на страницу возникает следующее исключение:
exception
javax.servlet.ServletException: WELD-001324 Argument bean must not be null
root cause
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001324 Argument bean must not be null
Код моей страницы:
@Page
@PageBean(MyPageBean.class)
public final class MyPage implements ViewConfig, Serializable {
}
и мой Page-Bean:
public class MyPageBean implements Serializable {
@InitView
protected void initView() { }
@PrePageAction
protected void prePageAction() { }
@PreRenderView
protected void preRenderView() { }
}
И Action-метод, вызываемый страницей Facelets:
public Class<? extends ViewConfig> nextPage() {
return MyPage.class;
}
Должен ли класс pageBean (MyPageBean) иметь конкретную аннотацию или интерфейс? Я уже пытался использовать @Model, но это ничего не изменило.
Моя конфигурация:
- Jave EE6 со сваркой (созданный с использованием архетипа сварки)
- Glassfish 3.1 Community Edition (поставляется с Netbeans 7)
- JSF2.0 (Мохарра 2.1)
- EJB 3.1
- MyFaces CODI 0.9.4
- RichFaces 4.0.0.Final
Спасибо за любые советы!
С наилучшими пожеланиями, Роберт
1 ответ
Если вы не используете какую-либо конкретную область видимости, она в конечном итоге будет @Dependent.
Я предлагаю по крайней мере использовать @RequestScoped (будьте осторожны, не используйте javax.faces.bean.RequestScoped, но аннотацию из CDI!)
Оки, поговорил с Герхардом сейчас, так как у него больше опыта работы с CODI на Weld.
Видимо, это ошибка в используемой вами версии Weld. Это должно работать в сварном шве 1.1.1. Финал https://github.com/weld/core/tree/1.1.1.Final Финал
Пожалуйста, попробуйте заменить сварочный узел в вашей стеклянной рыбке на сварной шов 1.1.1. Окончательный вариант
cp target/weld-osgi-bundle-1.1.1.jar /opt/sun/glassfish/glassfish/modules/weld-osgi-bundle.jar
если работает: кредиты идут на os890;)