【问题标题】:Pass JSP Input with href link使用 href 链接传递 JSP 输入
【发布时间】:2012-07-01 06:43:11
【问题描述】:

我想用 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>

【问题讨论】:

  • 在 HTML 中,标签和属性应该全部小写。不要大写。

标签: arrays jsp parameter-passing href


【解决方案1】:

HTTP 请求查询字符串采用name1=value1&amp;name2=value2&amp;name3=value3 的形式。所以你需要做的就是将String[] 转换为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>

对方的获取方法已经在你的previous question回答了。


与具体问题无关,在 JSP 中编写原始 Java 代码是 officially discouraged since a decade。您可以使用JSTL&lt;c:url&gt;、&lt;c:param&gt; 和&lt;c:forEach&gt; 以更简单的方式实现相同的目的。这是一个启动示例,假设您已经在预处理 servlet 或 JSP 顶部完成了 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>

【讨论】:

    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2012-08-04
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多