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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Один вопрос по Struts 
:(
    Опции темы
Kraska
Дата 16.6.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Достаю данные из базы, в jsp-странице пытаюсь их вывести в виде таблицы:

Код

 <logic:present name="some">

<table border="1" width='100%'>
 
 <logic:iterate id="data" name="some"> 
  <tr> 

 <td height='18' width='11%'align=center> <bean:write name="data" property="name"/> </td>
 <td height='18' width='11%'align=center> <bean:write name="data" property="age"/> </td>

  </tr>
  </logic:iterate> 
</table>

</logic:present>


..... выводятся! Но при обновлении страницы, они выводятся второй раз (т.е. таблица становится в 2 раза больше за счет продублированных! данных)


Цитата

Значит в обработчике запроса при каждом вызове в один и тот же бин с именем "some" данные заносятся без проверки есть ли там уже что-то. Проверяй перед добавлением, вот и все решение. 


Не могли бы вы подробнее рассказать, как сделать эту проверку? 
Спасибо! smile 
PM MAIL   Вверх
tux
Дата 17.6.2006, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(Kraska @  16.6.2006,  23:54 Найти цитируемый пост)
Не могли бы вы подробнее рассказать, как сделать эту проверку? 

Можно, только хорошо бы сначала посмотреть как эти данные попадают в бин. Приведи код экшна, в котором происходит переход на эту JSP-страницу. 
PM MAIL Skype GTalk Jabber YIM   Вверх
Kraska
Дата 17.6.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

public class TestAction extends Action 
{
    int age; String name ; 
    ArrayList list =  new ArrayList();
    
    public ActionForward execute(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
    throws IOException, ServletException 
    {
    String target = new String("success");
    
    DataSource ds;
    Connection conn=null;
    Statement statement=null;
try{
    ds = getDataSource(request, "userDB");
    conn = ds.getConnection();
    statement = conn.createStatement();
    ResultSet rs = statement.executeQuery("SELECT * FROM Table1");

    while (rs.next())
      {
age = rs.getInt(1);
name = rs.getString(2);

Data data = new Data();
data.setAge(String.valueOf(age));
data.setName(name);
 
list.add(data);
        }
request.setAttribute("some", list);

}catch(SQLException e)
  {
    e.printStackTrace();
  }

finally {
       
        try {
           conn.close();
        } catch (SQLException e) {
           e.printStackTrace();
        }
    }

        
return (mapping.findForward(target));
      }
}


Для этого перехода в struts-config.xml 

  
Код

  <action path="/index"
    type="pack.TestAction"
    scope="request" >
           <forward name="success" path="/new.jsp"/>
    </action>
 
PM MAIL   Вверх
Maksym
Дата 18.6.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Kraska
Твой list определен на уровне action'а. При повтороном обращении к action'у его экземпляр уже существует в памяти (и list уже заполнен данными). Определи list в теле execute(), либо обнуляй его перед заполнением. 
PM MAIL   Вверх
Nobody
Дата 18.6.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Maksym, обнулять нельзя, Action должен быть thread-safe, т.к. к его методу execute могут параллельно обращаться сколько угодно клиентов.
Kraska, не объявляй в Action'ах полей, а пользуйся только локальными переменными, и всё будет хорошо. 


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
Kraska
Дата 18.6.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Огромное спасибо за ответы, вы мне очень помогли! smile 
PM MAIL   Вверх
Maksym
Дата 19.6.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Nobody
Ты прав, только внутри execute 
PM MAIL   Вверх
stoweesh
Дата 20.6.2006, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Общепринятая практика хранить данные на форме. Данные из списка могут понадобиться тебе без перезаписывания позже. Так что лучше ArrayList положи на форму, а в экшене чисти когда надо, когда не надо - юзай заполненный. 
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.0801 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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