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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSF 
V
    Опции темы
offmagic
Дата 11.7.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, помогите разобраться. Изучаю JSF. Есть форма. Есть Бин в который сохряняется всё из формы. Есть ещё один бин который хранит список всех сохранёных объектов.

Код

PersonSave.jsp
-------------------
Для краткости пропустил все элементы формы
...
<h:commandButton action="success" value="Add this person" actionListener="#{listOfPerson.addPersonInList}">
<f:attribute name="user" value="#{person_save}" />
</h:commandButton>
...


#{person_save} - соответственно бин который хранит только что введённую информацию
#{listOfPerson} бин который хранит все сохраннёые объекты. Код класса вот такой:

Код

Persons.java
--------------------------
package www;
import java.util.ArrayList;

import javax.faces.event.ActionEvent;

public class PersonSave {
private ArrayList<Person> listOfPerson = new ArrayList<Person>();

public ArrayList<Person> getListOfPerson() {
return listOfPerson;
}

public void setListOfPerson(ArrayList<Person> listOfPerson) {
this.listOfPerson = listOfPerson;
}

public void addPersonInList(ActionEvent event){
Person p = (Person)event.getComponent().getAttributes().get("user");
listOfPerson.add(p);
}

}



Проблема в том что каждый раз в коллекции listOfPerson все элементы перезаписываются на тот бин который сохраняем тоесть получаем список из n-одинаковых элементов, хотя я только добавляю один элемент в конец - listOfPerson.add(p);

Код

facesconfig.xml
...
<managed-bean>
<managed-bean-name>person_save</managed-bean-name>
<managed-bean-class>www.Person</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<managed-bean>
<managed-bean-name>listOfPerson</managed-bean-name>
<managed-bean-class>www.Persons</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
...


Это сообщение отредактировал(а) offmagic - 11.7.2010, 18:23
PM MAIL   Вверх
powerOn
Дата 11.7.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Модератор: Название темы должно отражать ее суть!


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
SlavaSemushin
Дата 12.7.2010, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А разве в качестве значения actionListener не должен выступать класс, который реализцет одноимённый интерфейс с методом processAction()? Вот здесь есть пример: http://www.javabeat.net/tips/67-how-to-imp...actionlist.html

Если я правильно понял то, чего вы хотите, то я бы действовал иначе:
- сделал бы person_save request scope
- за'inject'ил бы в него listOfPerson
- все поля формы "прикрепил" бы к классу person_save
- в action подставил бы вызов метода, который бы вызывал метод из класса listOfPerson для добавления новой персоны и после этого возвращал строку для outcome
PM MAIL   Вверх
offmagic
Дата 12.7.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо. Проблема решена. 
В ArrayList мы добавляем ссылку на бин. После изменения бина, соответсвенно все элементы которые уже в коллекции буду указать на новый бин.  

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

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

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


 




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


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

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