Я не мог исправить ошибку, не знаю, почему WeldApplication продолжает возвращать этап разработки, отладка вела себя немного странно, и я не мог найти реальную причину. Попытался вручную установить WeldApplicationFactory, но безрезультатно. Наконец-то я сделал и уродливый обходной путь, но он помог мне сменить сцену и избавиться от надоедливого сообщения от JSF («привет» команде Mojarra)
Сначала переопределите WeldApplicationFactory, чтобы вернуть ваше собственное приложение:
public class CustomApplicationFactory extends WeldApplicationFactory {
/**
* TBD
* @param delegate
*/
public CustomApplicationFactory(ApplicationFactory delegate) {
super(delegate);
this.delegate = delegate;
}
private final ApplicationFactory delegate;
private Application application;
@Override
public void setApplication(Application application) {
this.application = application;
delegate.setApplication(application);
}
@Override
public Application getApplication() {
if (application == null) {
application = new HuckApplication(delegate.getApplication());
}
return application;
}
}
Затем переопределите приложение Weld:
/*
*
* Создано 13.03.2011
*
* $ Project $
* $ Workfile $
* $ Revision $
* /
открытый класс HuckApplication расширяет WeldApplication {
/**
* TBD
* @param application
*/
public HuckApplication(Application application) {
super(application);
// TODO Auto-generated constructor stub
}
/**
* @see javax.faces.application.ApplicationWrapper#getProjectStage()
*/
@Override
public ProjectStage getProjectStage() {
return ProjectStage.Production;
}
}
и зарегистрируйте свой новый ApplicationFactory в файле face-config.xml.
Это сработало для меня, хотя это решение совсем не красиво, но оно позволило мне перейти к собственной разработке, а не бороться с ошибками Mojarra / Glassfish:)