2016-09-20 107 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 
});