2012-06-29 1 views
0

단추 대신 href를 사용하여 입력 데이터를 전달하려고합니다. 문제는 배열을 보내는 것입니다. for 루프는 입력 데이터가 저장되어 있으므로 여러 링크를 만듭니다. 이 문제를 해결하기 위해 취할 조치는 무엇입니까?href 링크를 사용하여 JSP 입력 전달

<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을 사용하여 URL에서 올바르게 사용하기 위해 특수 문자가 %nn 형식으로 변환되도록 이름과 값을 인코딩하는 것입니다.

이해야 할 다음과 같이

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를 원시 자바 코드를 작성하는 것은 officially discouraged since a decade입니다. JSTL<c:url>, <c:param><c:forEach>을 사용하면 더 쉬운 방법으로 동일한 결과를 얻을 수 있습니다. 다음은 전처리 서블릿 또는 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> 
관련 문제