我的JavaScript代码不起作用:
<script type="text/javascript">
function verify() {
var amount = document.getElementById("amount");
var commission = document.getElementById("commission");
var commissionPayed = parseFloat(amount) * parseFloat(commission);
msg = "Withdraw Amount: " + amount.value + "\n Commission payed: " + commissionPayed.value;
//all we have to do is return the return value of the confirm() method
return confirm(msg);
}
表单本身:
<form action="Controller" method="post" onSubmit="return verify()">
<h1>Withdraw</h1>
<input type="hidden" name="command" id="command" value="withdrawAction">
<input type="hidden" name="commission" id="commission" value="${commission}">
<p>Amount: <input type="text" name="amount" id="amount"/></p>
<input type="submit" name="name" value="Withdraw" onclick="confirmation()"/></p>
</form>
在消息中,我将CommissionPayed视为未定值。我做错了什么?
有没有办法在脚本中使用JSP,例如${object}
?
我可以在JSP中完成整个计算吗?
答案 0 :(得分:1)
.value
是每个表单元素的成员,而不是每个数字值。
function verify(){
var amount = document.getElementById("amount").value;
var commission = document.getElementById("commission").value;
var commissionPayed = parseFloat(amount) * parseFloat(commission);
msg = "Withdraw Amount: " + amount + "\n Commission payed: " + commissionPayed;
//all we have to do is return the return value of the confirm() method
return confirm(msg);
}
当然,出于安全原因,您需要在服务器上再次执行相同的计算 - JavaScript计算仅适用于用户确认。存在Greasemonkey,Tamper Data和Firebug等工具;您不能相信Web浏览器为后端业务逻辑提供准确的计算。
如果在HTML,CSS或JavaScript代码中包含任何服务器端变量(尤其是字符串值),则需要对它们进行适当的转义(使用适合相关数据格式的函数,或者{{3 (XSS)攻击可能是可能的。我链接到的页面包含易受攻击的JSP代码的示例片段。
例如,JSP有一个名为cross-site scripting的标记,用于执行HTML转义。但是,如果您在JavaScript代码块(或样式属性)中依赖它,则您的脚本可能不安全。
答案 1 :(得分:0)
我可以在jsp中完成整个计算吗? ...我是在服务器端做的,是的。不应该相信客户端的这种计算。
要在jsp中获取值,您可以使用标准标记:<c:out value="${user.firstName}"/>
如果你谷歌也有一些关于标签主题的教程。例如http://www.developer.com/java/ejb/article.php/1447551/An-Introduction-to-JSP-Standard-Template-Library-JSTL.htm