Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过选择for循环中的项目列表链接到正确的项目页面_Java_Jsp_Navigateurl - Fatal编程技术网

Java 通过选择for循环中的项目列表链接到正确的项目页面

Java 通过选择for循环中的项目列表链接到正确的项目页面,java,jsp,navigateurl,Java,Jsp,Navigateurl,这是我的jsp页面,它使用for循环从数据库检索项目列表 <% itemManager mgr = new itemManager(); Item[] items = mgr.getAllItems(); for(int i = 0; i < items.length; i++){ %> <tr> <td> <img border="0" src="<%=items[i].getItemImag

这是我的jsp页面,它使用for循环从数据库检索项目列表

<%
    itemManager mgr = new itemManager();
    Item[] items = mgr.getAllItems();
    for(int i = 0; i < items.length; i++){
    %>
    <tr>
    <td> <img border="0" src="<%=items[i].getItemImage() %>" width="100" height="100">
                </td>
                <td>
                <%=items[i].getItemName()%>
                <input type="text" name="itemID" value="<%=items[i].getItemID()%>">
                        <br/>
                <%=items[i].getItemDesc()%>
                <br/>
                Start Bid : <%=items[i].getStartBid()%>
                <br/>
                Buy it now : <%=items[i].getEndBid()%>
                <br/>
                Bidding close on : <%=items[i].getDuration()%>
                <br/>
                <input type="submit" value="View"> 
    <%
    }
    %></table>
但是,在我单击查看按钮之后。它一直链接到itemID=1

URL disparis/ItemServlet?itemID=1&itemID=2

事实上,如果我单击itemID=2,URL应该显示如下:

/ItemServlet?itemID=2


因此,我如何才能做到这一点?提前谢谢

动态更改文本字段的名称。
并在servlet中使用getQueryString查找itemId名称和值。通过使用EL.I希望这将帮助您

代码中的问题是您使用的是单个表单,并在表单中动态创建输入框。因此,所有输入框都将具有相同的名称。这就是为什么在提交表单时,所有输入框值都作为请求参数发送。我只是减少了你代码中的一部分以便更好地理解。把这当作你的密码

<form action="item" method="get">
<table>
<%
ItemManager mgr = new ItemManager();
Item[] items = mgr.getAllItems();
for(int i = 0; i < items.length; i++){
%>

<tr>
     <td>
            <%=items[i].getItemName()%>
            <input type="text" name="itemID" value="<%=items[i].getItemId()%>">
            <input type="submit" value="View"> </td></tr>

<%
}
%></table>
</form>  
这里所有的输入框都与itemID同名。作为一种解决方案,您可以在for循环中创建表单,以便在提交时,仅将一个输入框值作为请求发送

在for循环中创建表单,如下代码所示

<table>
<%
ItemManager mgr = new ItemManager();
Item[] items = mgr.getAllItems();
for(int i = 0; i < items.length; i++){
%>
<form action="item" method="get">
<tr>
     <td>
            <%=items[i].getItemName()%>
            <input type="text" name="itemID" value="<%=items[i].getItemId()%>">
            <input type="submit" value="View"> </td></tr>
            </form>
<%
}
%></table>  
希望这对你有帮助

<form action="item" method="get">
<table>
<%
ItemManager mgr = new ItemManager();
Item[] items = mgr.getAllItems();
for(int i = 0; i < items.length; i++){
%>

<tr>
     <td>
            <%=items[i].getItemName()%>
            <input type="text" name="itemID" value="<%=items[i].getItemId()%>">
            <input type="submit" value="View"> </td></tr>

<%
}
%></table>
</form>  
<form action="item" method="get">
<table>
<tr><td>
            aaa
            <input type="text" name="itemID" value="1">
            <input type="submit" value="View"> </td></tr>



<tr>
     <td>
            bbb
            <input type="text" name="itemID" value="2">
            <input type="submit" value="View"> </td></tr>
<tr><td>
            ccc
            <input type="text" name="itemID" value="3">
            <input type="submit" value="View"> </td></tr>    
</table>
</form>
<table>
<%
ItemManager mgr = new ItemManager();
Item[] items = mgr.getAllItems();
for(int i = 0; i < items.length; i++){
%>
<form action="item" method="get">
<tr>
     <td>
            <%=items[i].getItemName()%>
            <input type="text" name="itemID" value="<%=items[i].getItemId()%>">
            <input type="submit" value="View"> </td></tr>
            </form>
<%
}
%></table>