Guice и JSF 2

Я пытаюсь использовать Guice для добавления свойств управляемого компонента JSF. Это все работает на Google App Engine (что может или не может быть важным)

Я следовал инструкциям здесь:

http://code.google.com/docreader/#p=google-guice&s=google-guice&t=GoogleAppEngine

Одна проблема в первом шаге. Я не могу создать подкласс модуля Servlet и настроить там мои отображения сервлета, потому что Faces обрабатывается javax.faces.webapp.FacesServlet, который подклассов Servlet, а не HttpServlet. Итак, я попытался оставить свою конфигурацию сервлета в файле web.xml и просто создать экземпляр нового ServletModel() вместе с моим бизнес-модулем при создании инжектора в прослушивателе контекста, описанном на втором шаге.

Сделав все это вместе с конфигурацией web.xml, мой управляемый компонент не получает никаких свойств. Метод заключается в следующем

@ManagedBean
@ViewScoped
public class ViewTables implements Serializable
{
    private DataService<Table> service;

    @Inject
    public void setService( DataService<Table> service )
    {
        this.service = service;
    }
    public List<Table> getTables()
    {
        return service.getAll();
    }
}

Итак, мне интересно, есть ли хитрость, чтобы Guice вводил в управляемый компонент JSF? Я, очевидно, не могу использовать инъекцию конструктора, потому что JSF нужен конструктор без аргументов для создания компонента.

6 ответов

Решение

Как насчет этого подхода, хорошо работает для нас:

http://uudashr.blogspot.com/2008/12/guicing-jsf-with-guice.html

Вы также можете создать HTTP-сервлет, который затем просто делегирует запрос в FacesServlet (как обертка). Это должно дать вам тот же эффект, используя Guice Servlet.

Проверьте http://code.google.com/p/guice2jsf/ и веб-сайт starchu.blogspot.com, он имеет отличную библиотеку, которая обеспечивает интеграцию с Guice и JSF 2.0

Будучи разработчиком JSF Sugar, я действительно хотел бы знать проблему, с которой вы столкнулись. Мы уже используем его в производстве, поэтому здесь не должно быть никаких "шоу-стопоров", может быть, что-то не очень хорошо задокументировано? Просто напишите мне: murbanek(at)gmx_net (замените _ на.) .

Поскольку информация в этом посте устарела, но вопрос все еще актуален, я хотел бы поделиться своими выводами по этой теме. Я написал небольшое руководство, включающее пример проекта, который можно запустить, о том, как настроить полностью веб-стек, работающий на полную мощность. Вы можете найти его здесь: https://github.com/skuzzle/guice-jsf

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