2010-10-08 46 views
0

我想通過錨標籤向servlet發送多個參數。 但問題是一個參數是java腳本方法的返回值。 欲瞭解更多解釋;通過錨標籤向servlet發送多個參數

<% int cnt = 1;%> 
<c:forEach items="${requestScope.AllUsers}" var="user"> 
    <tr id="<%=cnt%>"> 
     <td >${user.userName}</td> 
     <td>${user.emailAddress}</td> 
     <td><a onclick="return getUserName(<%=cnt%>)" href="servlet?">modify</a></td>  
    </tr> 
    <%cnt++;%> 
</c:forEach> 

//這裏我想用返回的形式getUserName(Java腳本方法)的返回值和其他參數(它的名字是頁),並將其發送到Servlet時點擊修改hyberlink 我怎麼能作出這樣的?

+0

他們,即使你從getUserName 2個對象,你打算怎麼傳送呢?或者你也想要。 – Bozho 2010-10-08 19:32:19

+0

是的,我想通過href – palAlaa 2010-10-08 19:44:44

回答

1

您的onclick處理程序中的返回值沒有達到您期望的效果。如果返回false,onclick只需要一個真或假的返回值並取消鏈接導航。相反,您想要將用戶直接從onclick處理程序發送到您想要的URL。試試這樣:

<a onclick="return redirect(<%=cnt%>)" href="#">modify</a> 

<script type="text/javascript"> 

function redirect(cnt) { 
    var user = getUserName(cnt); 
    window.location = 'servlet?other_parameters_here&user=' + user; 
    return false; 
} 

</script> 
1

讓JSP/EL相應地生成鏈接。例如。

<a href="servlet?page=pagename&username=${user.userName}">modify</a> 

&用於分隔多個參數。

或更好的是,使用<c:url>對參數進行適當的URL編碼,以避免由於用戶名中的URL保留字符而導致URL無效。

<c:url value="servlet" var="servletUrl"> 
    <c:param name="page" value="pagename" /> 
    <c:param name="username" value="${user.userName}" /> 
</c:url> 
<a href="${servletUrl}">modify</a> 

無關的問題,看看在c:forEachvarStatus屬性,以取代醜陋cnt小腳本

<c:forEach items="${requestScope.AllUsers}" var="user" varStatus="loop"> 
    <tr id="${loop.index + 1}"> 
     ... 

請注意,HTML id可能不以數字開頭。這是非法的。而是使用類似

<tr id="row_${loop.index + 1}"> 
+0

傳輸2個對象好的,這聽起來很清楚,但我怎麼能發送另一個參數給servler?我想發送pageName和userName! – palAlaa 2010-10-08 19:46:01

+0

使用'&'分隔多個參數。我更新了答案。順便說一下:「想要」不是一個真正的單詞。這不是一個disney.com聊天框等等。 – BalusC 2010-10-08 19:46:49

+0

許多thanx先生BalusC,承諾不要再說「想要」:) – palAlaa 2010-10-08 19:50:21

0

第1頁

[a href="NewServlet?id=name&password=1234"/] 

第2頁

String a=request.getParameter("id"); 
String b=request.getParameter("password"); 

輸出

a=name 
b=1234 

使用&符號,我們可以添加n參數...