0

我想用 href 而不是按钮传递输入数据。问题是我正在发送一个数组,我的 for 循环正在存储输入数据,因此它创建了多个链接。采取什么行动来解决这个问题。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Firstjsp</title>
</head>
<body>
<% String locations[] = {"Loan 1", "33.890542", "151.274856", "Address 1","true", "-35404.34"};
for (int i =0; i<locations.length; i++)
{
%>
<form name="submitForm" method="POST" action="Mapper.jsp">
<Input type = "Hidden" name = "loc" value = "<%= locations[i] %>">
<A HREF="Mapper.jsp">View Map</A>
</form>

<%
}   
%>

</body>
</html>
4

1 回答 1

2

HTTP 请求查询字符串采用name1=value1&name2=value2&name3=value3. 因此,您需要做的就是将String[]a转换String为该格式。附加要求是用于URLEncoder对名称和值进行编码,以便将任何特殊字符转换为%nn格式以便在 URL 中正确使用。

这应该这样做:

StringBuilder builder = new StringBuilder();

for (String location : locations) {
    if (builder.length() > 0) builder.append("&");
    builder.append("loc=").append(URLEncoder.encode(location, "UTF-8");
}

String locationsQuery = builder.toString();

然后您可以在链接中指定它,如下所示:

<a href="Mapper.jsp?<%=locationsQuery%>">View Map</a>

如何在对方获得它在你之前的问题中已经回答了。


与具体问题无关,十年来官方不鼓励在 JSP 中编写原始 Java 代码。您可以使用JSTL <c:url>和. 这是一个启动示例,假设您已经在预处理 servlet 或 JSP 顶部完成了 a:<c:param><c:forEach>request.setAttribute("locations", locations)

<c:url value="Mapper.jsp" var="mapperURL">
  <c:forEach items="${locations}" var="loc">
    <c:param name="loc" value="${loc}" />
  </c:forEach>
</c:url>
<a href="${mapperURL}">View Map</a>
于 2012-06-29T18:17:35.737 回答