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[]Stringを正確にその形式の に変換することだけです。追加の要件はURLEncoder、特殊文字が%nnURL で適切に使用される形式に変換されるように、名前と値をエンコードするために を使用することです。

これは次のことを行う必要があります。

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 コードを記述することは、10 年以上前から公式に推奨されていませんJSTL <c:url><c:param>を使用すると、より簡単な方法で同じことを実現できます<c:forEach>request.setAttribute("locations", locations)前処理サーブレットまたは JSP の最上位で を実行したと仮定した場合のキックオフ例を次に示します。

<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 に答える