2012-06-29 2 views
0

Я хочу передать входные данные с помощью href вместо кнопки. Проблема в том, что я отправляю массив, мой цикл for хранит входные данные, поэтому он создает несколько ссылок. Каков курс действий, чтобы исправить это.Pass JSP Input с href link

<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> 
+0

В HTML-теги и атрибуты должны быть в нижнем регистре. Не используйте их. – BalusC

ответ

2

Строка запроса HTTP-запроса принимает форму name1=value1&name2=value2&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.


Unrelated к конкретной проблеме, написание сырого кода Java в JSP, является officially discouraged since a decade. Вы можете добиться того же более легким образом с помощью 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>