2010-03-04 4 views
1

Я работаю над сервлетом, который делает соединение с базой данных, получает информацию об одной из таблиц ans и отправляет эту информацию в файл jsp. Этот файл будет печатать на информационной панели браузера, добавляя переключатели, которые позволяют нам выбирать одну из строк.Сервлет, JSP, JavaBeans и HTML-форма

сервлета выглядит следующим образом:

List<InfoBean> items = new ArrayList<InfoBean>(); 
if (!conexion.isClosed()){ 
    Statement st = (Statement) conexion.createStatement();   
    ResultSet rs = st.executeQuery("select * from lista_audio"); 
    while (rs.next()) 
    {items.add(getRow(rs));} 
    conexion.close();} 
req.getSession().setAttribute("items", items); 

В файле JSP я могу напечатать таблицу с информацией, добавляя радиокнопки, что пользователь будет использовать, чтобы выбрать 1 строку и отправить выбранные данные в сервлет используя форму я могу добавить:

< form action="administ" method=get enctype=multipart/form-data>  
< table> 
< table border=\"1\">< tr>< th>Title< /th>< th>Author< /th>< th>Album< /th>< /tr> 
< c:forEach items="${items}" var="item"> 
< tr>< td><input type="radio" name="SongInfo" value=${item.title}> 
< td>${item.title}< /td> 
< td>${item.author}< /td> 
< td>${item.album}< /td>< /tr> 
< /c:forEach> 
< /table> 

в «значение» поле я должен быть в состоянии послать в сервлет информацию, хранящуюся в $ {item.title}. Когда я устанавливаю значение = $ {item.title}, а заголовок, например, «Телохранитель», в сервлете информация, которую я могу получить, - это просто «The». Похоже, что он отправляет символы, расположенные до первого пробела строки. Как я могу получить целую строку?

Благодаря

ответ

0

Проверьте сгенерированную HTML (RightClick страницу в браузере, выберите View Source). Вы что-то не пропустили?

<input type="radio" name="SongInfo" value=The bodyguard> 

Да, котировки (обратите внимание на разницу в выделенном цветом, bodyguard стал атрибутом).

Таким образом, исправить:

<input type="radio" name="SongInfo" value="${item.title}"> 

Таким образом, он будет генерироваться следующим образом:

<input type="radio" name="SongInfo" value="The bodyguard"> 

Простой исправить, не так ли? :)


Сказанное так, ваш JDBC-код подвержен утечкам ресурсов. Вы должны закрыть все ресурсы Connection, Statement и ResultSet в блоке finally блока try, который вы приобрели. Для получения дополнительных советов см. this article. Также список не обязательно должен быть помещен в область сеанса. Также HTML синтаксически недействителен, но это, возможно, просто ошибка с копией, иначе это не сработало бы.

Далее ваша форма HTML объявлена ​​для использования метода запроса GET, но также объявлено, что используется тип кодировки multipart/form-data. Это не имеет никакого смысла. Только используйте этот enctype всякий раз, когда у вас есть <input type="file">, и если это так, то метод запроса должен быть POST.

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