2016-09-20 208 views
0

值使用popupWindow java類在JSP中,我有這樣的事情:傳入<a href>

<form id="updateform" name="updateform" method="post"> 
    <a href="javascript:changePassword()" ><b>change Password</b></font></a> 
</form> 

function changePassword() 
{ 
    var urlString= "./WebApp?app=msgsrv&class=changepassword&id=" + <%=id%> ; 
    popupWindow(urlString , 'ChangePassword', '600', '400', false, true); 
} 

changePassword是一種servlet類的,有
execute(HttpServletRequest, HttpServletResponse)方法。

這是我目前的代碼,但我想擺脫id Url由於安全問題。

我試圖使用一個隱藏的字段和request.setAttribute(),他們都沒有工作。我想知道是否有任何其他方式可以在沒有提交表單的情況下將值傳遞給Java類,因爲我在錨標記中使用了popupWindow

回答

0

首先,您不能在JavaScript中使用錨標記獲取java值。最好的方法是路徑id作爲方法參數。

<form id="updateform" name="updateform" method="post"> 
      <a href="#" onclick="changePassword(<%=id%>);" ><b>change Password</b></font></a> 
</form> 

function changePassword(id) 
{ 
    var urlString = "./WebApp?app=msgsrv&class=changepassword&id=" + id + ""; 
    popupWindow(urlString, 'ChangePassword', '600', '400', false, true); 
} 
+0

我認爲這裏的想法是根據來自Session或任何東西的值生成url。這意味着他的網址對客戶端是靜態的。 – AxelH

+0

@AxelH感謝您的評論。可能是你的意見是真實的,但我明白他想要通過錨標籤傳遞參數給JavaScript,並且他希望將參數傳遞給JavaScript方法。 –

+0

問題是'我想擺脫由於安全問題在Url的id。所以將jsp標籤從字符串移動到參數不會改變任何東西......這完全是一個設計選擇... – AxelH

0

我有責任在這裏發表您的看法。

我想知道是否有任何其他方式可以將值傳遞給Java類而無需提交表單,因爲我在anchor標記中使用了popupWindow。

我認爲你假設你不能提交表單由於標籤。但事實是你可以使用JavaScript使用錨標籤提交表單。

$("form").submit(); 

完整的代碼示例

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("form").submit(function(){ 
     alert("Submitted"); 
    }); 
    $("#submitbutton").click(function(){ 
     $("form").submit(); 
    }); 
}); 
</script> 
</head> 
<body> 


<form id="updateform" name="updateform" method="post"> 
    <input type="hidden" name="app" value="msgsrv"> 
    <input type="hidden" name="class" value="changepassword"> 
    <input type="hidden" name="id" value="1000"> 
    <a id="submitbutton" ><b>change Password</b></font></a> 
</form> 


</body> 
</html> 

您也可以使用AJAX表單提交。

jQuery.ajax({ 
    url: '<c:url value="/WebApp" />', 
    type: 'POST', 
    dataType:'json', 
    data: jQuery('#updateform').serialize(), 
    success: yourSuccessFunctionNameHere 
});