Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Java Bean + адресная строка


Автор: Снусмумрик 13.2.2009, 15:54
Суть вопроса в следующем: Каким образом можно получить параметр из адресной строки и запихнуть его в переменную JavaBean-а ?

Тоесть есть скажем некоторый бин, назовем его к примеру jBean.java в этом бине есть функция которой требуеться передать какой либо параметр из адресной строки. Скажем адресная строка есть ?parametr=123
так вот эти 123 должен получить цикл в jBean.java

к примеру 

Код

int id = parametr;
int res;

  for(int count=id; count < productlist.size(); count++)
                            { res +=count; }


Есть ли возможность использовать каким либо образом функию doGet в бине
Скажу сразу что сервлет запускаеться нормально и этот параметр получаю, но мне надо получить эту переменную именно в бине.
Может есть возможность импортировать например сервлет с функцией doGet в бин а потом ее там как либо вызвать?

Автор: Shurfll 13.2.2009, 16:03
боюсь ошибиться, но почемубы не сделать jBean extends HttpServlet (или как там его) ?

Автор: Снусмумрик 13.2.2009, 16:23
Цитата(Shurfll @ 13.2.2009,  16:03)
боюсь ошибиться, но почемубы не сделать jBean extends HttpServlet (или как там его) ?

Иенно так и делал, но дело в том что,  если я прямо втавляю метод doGet в бин а в этом методе получая строку с моей переменой, которую потом перевожу в int, то я не могу потом ее(var)вызвать в бине. Поэтому и спрашиваю как можно еще ее получить..Может я что то не так делаю ?
пример

Код

public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {

        response.setContentType("text/html"); 
        
        String var = request.getParameter("parametr");  // Получение параметров от обьекта
...



Автор: Shurfll 13.2.2009, 17:38
Код


private String bean_var;

public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
        response.setContentType("text/html"); 
        
        bean_var = request.getParameter("parametr");  // Получение параметров от обьекта
}

public void beanFunction(){
        System.out.println(bean_var);
}



это имеется в виду? или я опять что-то не понял? Если да - то вы просто не видете переменную var из-за ограничения видимости локальной переменной метода doGet ...
почитайте про видимость переменных - и больше у вас таких вопросов не будет =)

Автор: Tony 13.2.2009, 18:04
Снусмумрик, посмотри beanutils.jar от jakarti  в разделе  commons
Код

           //код в контроллере(сервлете)
           BeanUtils.populate(mojBeanObjeky, request.getRequestParameterMap());


Соответсетвенно если у тебя параметер parametr=12345. То должен быть setParameter i getParameter методы v бине.

Автор: Снусмумрик 13.2.2009, 19:23
Цитата(Shurfll @ 13.2.2009,  17:38)
Код


private String bean_var;

public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
        response.setContentType("text/html"); 
        
        bean_var = request.getParameter("parametr");  // Получение параметров от обьекта
}



это имеется в виду? или я опять что-то не понял? Если да - то вы просто не видете переменную var из-за ограничения видимости локальной переменной метода doGet ...
почитайте про видимость переменных - и больше у вас таких вопросов не будет =)

Ребята, спасибо за помощь, Shurfll не верю сам себе! У меня также переменная private String bean_var; Была вынесена, но не работало - вставил тот же код но от вас, все заработало  smile 

Но есть один момент:
Переенная видиться только как null. Тоесть она не берет ничего с адресной строки.
Подскажите пожалуйста, как же получить число 123 с этой строки ?parametr=123?

Автор: Снусмумрик 17.2.2009, 14:43
Хочу перефразировать мой вопрос..
Есть ли возможность вытащить какое либо значение параметра из адресной строки, и при этом не пользоваться аплетами?
Или это все только через апплет..

Возможно есть что то наподобии этого: (общий ход мысли)

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

Где то так.. я не имеюю ввиду имеено этот код, просто хочу обьяснить ход своей мысли 

public void handleLaunch(LaunchEvent event)
{

  Object usr = username;
  event.getParameters().put("firstname", usr);
}



Пожалуйста, прошу помощи в этом вопросе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)