好的,所以一旦我导航到此页面并加载它,我想将其重定向到"篮子.jsp",但由于某种原因,它只是一遍又一遍地刷新。这一定与我一遍又一遍地调用 onload 函数有关,但我不知道它为什么要这样做。
我的代码:
<%
String empty = request.getParameter("emptyBasket");
if (empty!=null) {
basket.clearBasket();
}
String item = request.getParameter("addItem");
basket.addItem(item); %>
<html>
<head>
<link rel="stylesheet" href="css/style.css" type="text/css"/>
</head>
<body>
<table>
<!-- some table stuff unimportant -->
</table>
<p> Order total = <%= basket.getTotalString()%>
<%
if ( basket.getTotal() > 0) {
%>
<form action="order.jsp" method="post">
<input type="text" name="name" size="20">
<input type="submit" value="Place Order" />
</form>
<form action="basket.jsp" method="get">
<input type="hidden" name="emptyBasket" value="yes">
<input type="submit" value="Empty Basket" />
</form>
<%
}
%>
<script>
window.onload = function(){
window.location.href = 'basket.jsp';
}
</script>
</body>
</html>
如果 basket.getTotal()> 0 你正在创建 2 个表单? 然后你如何提交数据? 以及到哪里.. 这段代码没有意义
(它基本上就像如果为 true 创建 2 个表单,然后在刷新的页面上,您有这 2 个表单,一个提交给订单,一个提交到购物篮
一般来说,在视图上拥有比HTML更多的Java是不好的......但我认为这是ATM的主要问题
form action="basket.jsp"method="get" && window.location.href = 'basket.jsp';
您将表单提交到该页面,然后刷新它
我猜你想做的一些事情,但我可能完全不对劲。
你能解释一下这里的逻辑或流程是什么吗?
另外..我认为您不应该在HTML页面上接收参数,您需要一个控制器。
您应该将结构从索引中的所有内容更改为.html。
项目
-来源
--控制器.java
-蹼
--索引.html
以索引.html的形式将数据提交到控制器.java(控制器.java可以是 servlet)。在控制器中.java实现doGet/doPost函数并收集数据。您甚至可以直接在该 servlet 中执行逻辑,并使用请求分派器将数据发送回您的视图。
-
<meta http-equiv="refresh" content="0; url=your url to another page" />
但是,W3C 不鼓励使用 meta 进行重定向。 -
<body onload=window.location='your url to another page'>
.