以HTML表单发送的信息

时间:2010-04-17 13:06:21

标签: html forms servlets html-table

我有一个HTML文件,向用户显示数据库的内容(显示为表格)。用户可以选择其中一行。完成此操作后,用户所做的选择将发送到将使用该信息的servlet。

想象一下,这个servlet将查找与用户选择的信息相关的文件。我想做的是为用户提供选择,同时选择servlet将要查找的文件数。这样,用户应该能够选择表中显示的行之一,并且还应该能够键入要查找的文件的数量。

到目前为止,我能够将用户在表中选择的内容发送给servlet,但我想知道是否可以将所请求的文件数附加到此信息中。

这是我的代码:

<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 个答案:

答案 0 :(得分:1)

这取决于。如果您想使用单选按钮单个选择行,那么您只需将一个输入字段放在表的底部,然后按下提交按钮。 E.g:

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

你可以在servlet中获得如下:

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

但是如果你想要使用复选框多次选择行,或者你希望这个字段以任何方式出现在每一行中,那么你需要给radio / checkbox字段一个行索引的值。如果您使用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"

在servlet中,您可以获得与表中显示的顺序相同的所有输入字段,如下所示:

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];