2014-02-19 5 views
0

Обычно сервлет имеет doGet() и doPost() методов. Они используются для захвата входящего request parameters, который затем может использоваться в любой части приложения, если разработчик этого пожелает.Может ли управляемый bean-файл jsf вести себя как сервлет?

Теперь, если вместо использования сервлета разработчик хочет использовать jsf managed bean, есть ли способ получить параметры запроса в самом компоненте? Если да, то как это можно сделать?

Я видел это POST, который показывает способ получения материала по запросу в JSF. Может ли это быть использовано для получения параметров запроса в управляемом компоненте, как это:

HttpServletRequest origRequest = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
String myReqQuery1 = origRequest.getParameter("ReqQuery1"); 

В этом случае будет применение следовать jsf life cycle или servlet life cycle или оба?

ответ

0

JSF на самом деле не работает. Поля формы в представлении (.jsf или что-то еще) зеркалируются полями и свойствами в компоненте. Они автоматически заполняются JSF, когда сервлет вызывается дальше по стеку.

Это делает необходимым чтение избыточных параметров HTTP, за исключением случаев, когда браузер приземляется на странице JSF из формы, не основанной на JSF. Для этого что-то вроде Spring-MVC может принять целевой URL-адрес URI и установить соединение с экземпляром ManagedBean, прежде чем перенаправить браузер на URL-адрес, поддерживаемый JSF.

+0

Обратите внимание, что когда управление передается компоненту, значения *, отправленные * пользователем, были подтверждены и/или преобразованы в их окончательную форму, поэтому вы получаете абстракцию. См. Также аннотацию «всевозможные» [@Param] (http://showcase.omnifaces.org/cdi/Param), чтобы получить параметры запроса в компоненте CDI. – mabi

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