Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jsf 2.0 передача параметров в метод бина 
:(
    Опции темы
4epT
Дата 12.4.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Здравствуйте! Допустим имеется форма с вводов логина и пароля, на свойство value привязан бин:
Код

<h:inputText value="#{user.login}" />
<h:inputText value="#{user.password}" />


И есть кнопка
Код

<h:commandButton action="#{userController.login}" />


В методе login нужно как то получить введенные данные ... пробовал получать request из FacesContext, request получил, но методы getParametr("login")
 возвращает null.

Кто знает как такое делается ?) было бы классно если бы можно было получить параметры в виде объекта user =)

PM MAIL   Вверх
mbasil
Дата 12.4.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



А описан ли ваш компонент как управляемый, то есть
1. Либо в файле faces-config.xml с помощью элемента <managed-bean>
2. Либо с помощью аннотации @ManagedBean

В этом случае ваш компонент user должен быть помещен в некоторую област памяти (scope), откуды вы его можете извлечь
    

Это сообщение отредактировал(а) mbasil - 12.4.2011, 14:47
PM MAIL   Вверх
4epT
Дата 12.4.2011, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Цитата(mbasil @ 12.4.2011,  14:46)
А описан ли ваш компонент как управляемый, то есть
1. Либо в файле faces-config.xml с помощью элемента <managed-bean>
2. Либо с помощью аннотации @ManagedBean

В этом случае ваш компонент user должен быть помещен в некоторую област памяти (scope), откуды вы его можете извлечь

Да оба класса user  и userController помечены аннотациями @Managedbean и @SessionScope.

А можно пример ?)
PM MAIL   Вверх
mbasil
Дата 12.4.2011, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Получение компонента зависит от области, в каоторую он помещен (по умолчанию область Request).
В моих классах действиях я делаю это примерно так:
Код

public class CustAction extends Action {

 public Object execute( HttpServletRequest request ) {

    String userName = null;

    // In Request scope
    userName = (User)request.getAttribute("user");

    // In Session scope
    HttpSession session = request.getSession();
    userName = (User)session.getAttribute("user");

    // In Application scope
    ServletContext servCtx = session.getServletContext();
    userName = (User)servCtx.getAttribute("user");
    . . .
}


На другой странице можно использовать тот же синтаксис, что и на порождающей странице.

Код
<h:outputText value="#{requestScope.user.login}" />


Есть и другие способы.
PM MAIL   Вверх
4epT
Дата 12.4.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Цитата(mbasil @ 12.4.2011,  15:42)
Получение компонента зависит от области, в каоторую он помещен (по умолчанию область Request).
В моих классах действиях я делаю это примерно так:
Код

public class CustAction extends Action {

 public Object execute( HttpServletRequest request ) {

    String userName = null;

    // In Request scope
    userName = (User)request.getAttribute("user");

    // In Session scope
    HttpSession session = request.getSession();
    userName = (User)session.getAttribute("user");

    // In Application scope
    ServletContext servCtx = session.getServletContext();
    userName = (User)servCtx.getAttribute("user");
    . . .
}


На другой странице можно использовать тот же синтаксис, что и на порождающей странице.

Код
<h:outputText value="#{requestScope.user.login}" />


Есть и другие способы.

Хм, но ведь метод управляемого бина не должен принимать параметров, а у Вас в примере он принимает httpRequest .. или я что то путаю ?

Это сообщение отредактировал(а) 4epT - 12.4.2011, 17:18
PM MAIL   Вверх
mbasil
Дата 12.4.2011, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Класс  CustAction это мой собственный класс действие, который вызывается контроллером. Всю эту бодягу, то есть реализацию MVC, я сам написал и игнорирую контроллер JSF. Мой класс действие не является "управляемым компонентом" с точки зрения JSF.  Этот пример я привел лишь для иллюстрации того, как можно получить компоненты из области с целью отправки в бизнес слой.

Как я уже писал можно получить и другим способом, например, я думаю так
Код

FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
         context.getApplication().createValueBinding("#{user.name}");
String name = (String) binding.getValue( context );


Это сообщение отредактировал(а) mbasil - 12.4.2011, 16:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.