2009-12-28 1 views
2

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

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

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 нуждается в конструкторе no-arg для создания компонента.

ответ

5
+0

Я все это видел, прежде чем задавать вопрос, и так как никто из ящиков не думал, что я спрошу. Я пробовал Guicesf и это сахара, и никто из них не работал. Я, наконец, взял код из ссылки snippets.dzone.com и изменил его на ощупь и, похоже, работает. Модификация состояла в том, чтобы перенести создание инжектора из getValue, а затем отправить новый модуль ervletModule и мой собственный модуль во время создания. Иначе это не сработало. Затем я смог удалить свой ServletContextListener из web.xml. Наверное, больше, чем вы хотели знать, но спасибо за помощь! – digitaljoel

+0

В этом случае вы должны были упомянуть «Я пробовал этот, он не работал» _ этим образом_/_with this exception_ »;) – Bozho

+0

Да, я должен был. Извини за это. – digitaljoel

1

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

+0

duh, почему я не подумал об этом? Я мог бы доверить это больше, чем мой собственный ElResolver, и завтра это может случиться. Благодаря! – digitaljoel

0

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

+1

поставил это как комментарий к своему вопросу, а не как ответ. – Bozho

1

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

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

+0

Как смешно, в итоге я сделал что-то очень похожее. http://digitaljoel.wordpress.com/2010/05/01/guice-and-jsf-2/ – digitaljoel

+0

@ digitaljoel это все еще лучшее решение для интеграции Guice в JSF? У вас была возможность проверить его в производственной среде? –

+1

@ DanielNovak Я никогда не попадал в производственную среду, но я никогда не видел проблем в моем беспорядке. Я играл с этим материалом в Google App Engine. С тех пор я покинул JSF и Guice (мне понравился Guice), и теперь я нахожусь в полной пачке Spring для своих собственных вещей. – digitaljoel

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^