2012-06-03 2 views
0

Я разрабатываю веб-приложение с использованием технологии jsf. Я хочу, чтобы метод моего бэк-файла был , вызываемый при отображении главной страницы моего приложения. Как правило, используется метод backing bean , когда пользователь нажимает на ссылку или кнопку.jsf и url-шаблон файла web.xml

Короче говоря, я хочу, чтобы моя поддержка боб, чтобы получить некоторые данные из базы данных и отправить его на страницу JSF, и я хочу, чтобы это произошло, когда пользователь активирует ссылку домашней страницы моего приложения.

Вот как я хотел решить проблему: используйте сервлет, который выполняется, когда вызывается ожидаемая ссылка, и вызываем бэк-компонент из этого сервлета; но проблема - У меня возникают некоторые трудности с url-образцом сервлета в файле web.xml. Ссылка на главную страницу моего приложения: home.jsf. Название моего сервлета HomeServlet и вот как я настроил его в файле web.xml:

<servlet> 
     <servlet-name>HomeServlet</servlet-name> 
     <servlet-class>utils.HomeServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>HomeServlet</servlet-name> 
     <url-pattern>/home.jsf</url-pattern> 
    </servlet-mapping> 

Так что, когда я запустить приложение, сервлет выполняется, но моя страница home.jsf пусто (полностью пустой). Я не знаю почему.

Так что я хочу знать:

  • Могу ли я, используя правильный подход к этой проблеме?

  • Если да, то какой url-шаблон следует использовать?

ответ

0

Нет, это определенно не правильный подход. Вы работаете вокруг JSF. Вы должны выполнять эту работу только в конструкторе или @PostConstruct метод запроса или просмотреть управляемый компонент JSF, связанный с представлением.

E.g.

@ManagedBean 
@RequestScoped 
public class Home { 

    public Home() { 
     // Here. 
    } 

    @PostConstruct 
    public void init() { 
     // Or here. This will be invoked *after* any dependency injections, 
     // such as @EJB, @ManagedProperty, @Inject, @Resource, etc. 
    } 

    // ... 
} 

Всякий раз, когда JSF встречает #{home.someproperty} ссылку в home.xhtml (или home.jsp) в первый раз, то боб просто будет построен.

При разработке с помощью JSF у вас не должно быть необходимости разрабатывать другие сервлеты. В JSF FacesServlet является единственным сервлетом, который уже выполняет все необходимые операции запроса/ответа и управления моделью/представлением.

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