我有这种代码的和平:
<%
ArrayList<Utente> lista=null;
try{
lista= (ArrayList<Utente>)request.getAttribute("lista");
}catch(Exception e){
e.printStackTrace();
}
if(lista!=null){
for(int i=0;i<lista.size();i++){ out.print("<tr>");
out.print("<td>"+lista.get(i).getNome()+"</td>");
out.print("<td>"+lista.get(i).getCognome()+"</td>");
out.print("<td>"+lista.get(i).getPosizione()+"</td>");
out.print("<td>"+lista.get(i).getTelefono()+"</td>");
out.print("<td><img src='imm/view.png'> "+
"<a href='' id='"+lista.get(i).getIdUtente()+"' class='view'>Vedi</a>   "
+"<img src='imm/mod.png'> "+
"<a href='InfoUtente&id="+lista.get(i).getIdUtente()+"' id='"+lista.get(i).getIdUtente()+"' class='mod'>Modifica </a>   "+
"<img src='imm/del.png'> "+
"<a href='' id='"+lista.get(i).getIdUtente()+"' class='del' name='"+lista.get(i).getNome()+" "+lista.get(i).getCognome()+"'>Elimina </a></td>");
}
}
%>
我现在要做的是当我点击特定索引上的链接Modifica时调用servlet InfoUtente。所以我想将index参数传递给servlet。 我该怎么办?
答案 0 :(得分:1)
就像您一样,除了查询字符串必须以?
而不是&
开头:
<a href='InfoUtente?id="+lista.get(i).getIdUtente()
^-- here
&
用于分隔查询字符串中的参数。它必须是HTML转义的。因此,如果您要传递第二个参数,则需要生成以下URL:
<a href='InfoUtente?id=" + theId + "&foo=bar"
请注意,从Java代码生成HTML不是一个好习惯。它导致难以阅读,无法维护的代码。应避免使用Scriptlet。您应该使用JSTL标记和JSP EL:
<c:forEach var="utente" items="${lista}">
<tr>
<td><c:out value="${utente.nome}"/></td>
<td><c:out value="${utente.cognome}"/></td>
<td><c:out value="${utente.posizione}"/></td>
<td><c:out value="${utente.telefono}"/></td>
<td>
<img src="imm/view.png"/>
<a href="" id="${utente.idUtente}" class="view">Vedi</a>
<img src="imm/mod.png"/>
<a href="<c:url value="InfoUtente">
<c:param name="id" value="${utente.idUtente}"/>
</c:url>" class="mod">Modifica</a>
<img src="imm/del.png"/>
<a href="" class="del" name="<c:out value="${utente.nome} ${utente.cognome}"/>">Elimina</a>
</td>
</tr>
</c:forEach>
请注意结构的可读性。另请注意
而不是 
<c:out>
允许转义特殊字符。因此,如果任何属性包含<
或>
或&
,则不会导致无效的HTML(或更糟糕的是:导致XSS攻击)<c:url>
允许使用绝对路径而不是相对路径而不对上下文路径进行硬编码,并对参数进行URL编码。答案 1 :(得分:0)
编写一个java脚本函数并调用特定字段更改的onClick(或onSubmit等)函数。在该函数内部构建一个类似“page.html?param = value”的字符串。并将页面重定向到那里。
答案 2 :(得分:0)
我建议你用jsp执行此操作,如下所示,并提到你必须提出的问题?开始查询字符串而不是&amp;
检查以下代码
<%
ArrayList<Utente> lista=null;
try{
lista= (ArrayList<Utente>)request.getAttribute("lista");
}catch(Exception e){
e.printStackTrace();
}
if(lista!=null){
for(Utente utente : lista){%>
<tr>
<td><%=utente.getName()%></td>
<td><%=utente.getCognome()%></td>
<td><%=utente.getPosizione()%></td>
<td><%=utente.getTelefono()%></td>
<td>
<img src='imm/view.png'> 
<a href='' id='<%=utente.getIdUtente()%>' class='view'>Vedi</a>   
<img src='imm/mod.png'> </a>
<a href='InfoUtente?id=<%=utente.getIdUtente()%>' id='<%=utente.getIdUtente()%>' class='mod'>Modifica </a>   
<img src='imm/del.png'> </a> <!-- Here you have to put ? instead of & -->
<a href='' id='<%=utente.getIdUtente()%>' class='del' name='<%=utente.getName()%>'>Elimina</a></td>
</tr>
<%}
}%>