javascript - 使用来自 servlet 的上一个表单值重定向回上一个 jsp 页面
问题描述
所以基本上我使用以下代码作为搜索包裹功能,它有 2 个按钮addnew
,search
两者都将获取target
输入字段中输入的值,并根据选择的按钮重定向
<div>
<i class="fas fa-search"></i>
<form id="forms" method="post" action="admin_tracking.jsp">
<input name="target" type="input" placeholder = "TrackingNo..." class = "text_search"/>
</form>
</div>
<script>
function submit(value)
{
console.log(value)
if (value == "add") {
//change action of form
document.getElementById('forms').action = 'admin_tracking.jsp?status='
document.getElementById('forms').submit(); //submit
} else {
document.getElementById('forms').action = 'admin_home_result.jsp'
document.getElementById('forms').submit();
}
}
</script>
<button class="button_search" value = "add" onclick="submit(this.value)">
Add New
</button>
<button class="button_search" value = "srch" onclick="submit(this.value)">
Search
</button>
一旦重定向到搜索页面,trackingNo
将返回匹配的包裹,用户可以选择更新包裹的状态或删除它。当用户选择更新包裹时,AdminCollectServlet
将调用如下:
href="AdminCollectServlet?target=<%=rs.getString("trackingNo")%>&from=${pageContext.request.requestURI}&query=${pageContext.request.queryString}"
执行数据库更新。完成后,我使用了这条线
response.sendRedirect(request.getParameter("from") + "?" + request.getParameter("query"));
重定向回调用 servlet 的位置。
但是由于target
是在表单中提交的,而不是作为url的参数,重定向页面将无法返回搜索结果。
我想知道有没有办法检索完整的表单内容并将其传递给response.sendredirect()
如何传递参数?
解决方案
如果您需要存储值,client-side
您可以使用localStoragetoken
在再次提交页面和 onload 之前存储值,form
您可以获得该值localStorage.getItem(yourvalue);
。您需要在代码js
中进行一些更改。html
在您的html
代码中添加标签 .ie onload
:body
//add onload event
<body onload="check_storage()">
<!--other html codes-->
</body>
你的javascript
代码:
//onload of your page this will get called
function check_storage() {
//check if there is any value in localStorage
if (localStorage.getItem("save") != null) {
//get that value
var value = localStorage.getItem("save");
alert(value);
//put that value again in input box
document.getElementsByName("target")[0].value = value;
}
}
function submit(value) {
//getting input value
var save = document.getElementsByName("target")[0].value;
console.log(save);
localStorage.clear();//clear previous data
localStorage.setItem("save", save);//add data to storage
if (value == "add") {
//change action of form
document.getElementById('forms').action = 'admin_tracking.jsp?status='
document.getElementById('forms').submit(); //submit
} else {
document.getElementById('forms').action = 'admin_home_result.jsp'
document.getElementById('forms').submit();
}
}
或者,如果您需要存储值,server side
您可以使用HttpSession并使用setAttribute存储值token
并将其获取到您的 jsp 页面中,只需编写${sessionScope.yourvariablename}
.
推荐阅读
- javascript - 使用 Promises 处理 Firestore 任务
- kendo-ui - Kendo TabStrip - 项目在条带内移动
- javascript - 我是使用 Knockout js 的新手,我尝试显示一个列表,但出现以下错误
- angular - 如何更改 Angular 中的二级路由?
- python - 无法从当前目录导入 .pyc 文件
- database - 计算内存块中的可用空间
- python - 在python中使用卡方检验对一列进行正态性检验
- java - 带有 javafx-fxml.jar 的 Intellij 和 openjdk 8 在 linux mint 中无法正常工作
- bash - aws s3 cli 与实时观看文件夹同步
- excel - 如何在 For .. Do 循环中重置变量?