Информация отправлена ​​в формате HTML - PullRequest
1 голос
/ 17 апреля 2010

У меня есть HTML-файл, который показывает пользователю содержимое базы данных (она отображается в виде таблицы). Пользователь может выбрать одну из строк. Когда это сделано, сделанный пользователем выбор отправляется сервлету, который будет работать с этой информацией.

Представьте, что этот сервлет будет искать файлы, связанные с информацией, выбранной пользователем. То, что я хотел бы сделать, это предоставить пользователю возможность выбора количества файлов, которые будут искать сервлет. Таким образом, пользователь должен иметь возможность выбрать одну из строк, показанных в таблице, а также набрать номера файлов, которые нужно искать.

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

Это мой код:

<center><form action="administ" method=post >                           
<center><table>
<table border=\"1\"><tr><th></th><th>Titleo</th><th>Author</th><th>Album</th></tr>
<c:forEach items="${items}" var="item">
<tr>                                
<td><input type="radio" name="Song" value="${item.file}@${item.title}#${item.author}$${item.album}">
<td>${item.title}</td>
<td>${item.author}</td>
<td>${item.album}</td>
</tr>
</c:forEach>
</table></center>
<tr><td colspan=2><input type=submit value = play name = option></td></tr>
<tr><td colspan=2><input type=submit value = Delete name = option></td></tr>

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

1 Ответ

1 голос
/ 17 апреля 2010

Это зависит. Если вы хотите один выбор строк с помощью радиокнопок, то вы можете просто поместить одно поле ввода внизу таблицы, рядом с кнопкой отправки или около того. E.g.:

<input type="text" name="numberOfFiles">

, который вы можете получить в сервлете следующим образом:

String numberOfFiles = request.getParameter("numberOfFiles");

Но если вы хотите множественный выбор строк с использованием флажков или если вы хотите, чтобы это поле появлялось в каждой строке каким-либо образом, вам нужно присвоить полю радио / флажок значение индекса строки. Если вы используете JSTL <c:forEach> для итерации по строкам (что я ожидаю, что вы действительно делаете), то вы можете использовать атрибут varStatus для объявления LoopTagStatus. Внутри цикла вы можете получить индекс строки по LoopTagStatus#getIndex(). E.g.:

<table>
    <c:forEach items="${items}" var="item" varStatus="loop">
        <tr>
            <td><input type="checkbox" name="selected" value="${loop.index}"></td>
            <td><input type="text" name="number"></td>
        </tr>
    </c:forEach>
</table>
<input type="submit">

(чтобы иметь один выбор, просто замените type="checkbox" на type="radio")

В сервлете вы можете получить все поля ввода с одинаковыми именами в том порядке, в котором они указаны в таблице следующим образом:

String[] numbersOfFiles = request.getParameterValues("numberOfFiles");

С помощью флажка-выбора вы можете получить все выбранные индексы строк и, следовательно, также связанное поле ввода следующим образом:

String[] selectedIndexes = request.getParameterValues("selected");
for (String selectedIndex : selectedIndexes) {
    int index = Integer.parseInt(selectedIndex);
    String numberOfFiles = numbersOfFiles[index];
    // ...
}

Или, если это выбранная радиокнопкой строка, которая в любом случае является одиночной выборкой:

String selectedIndex = request.getParameter("selected");
int index = Integer.parseInt(selectedIndex);
String numberOfFiles = numbersOfFiles[index];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...