Я создаю небольшие веб-приложения, и я столкнулся со следующей проблемой. У меня есть 2 JSP, и когда я нажимаю кнопку отправки, он каждый раз повторяет значение. Я хочу, чтобы, когда я нажимаю кнопку отправки, он должен давать только соответствующее значение.
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="java.io.*,java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Class Video</title>
</head>
<body>
<form action="second.jsp" method="post">
<table>
<%
File f=new File("C:/Users/SHAKTI/Desktop/video");
File[] list=f.listFiles();
if(list.length!=0){
String s[]=new String[list.length];
for(int i=0;i<list.length;i++){
s[i]=list[i].toString();
String fi=list[i].getName();
%>
<tr><td><%=fi %></td>
<td><input type="text" name="file" value="<%=s[i] %>">
</td>
<td><input type="submit" name="play" value="Play"></td>
</tr>
<%}}
else{
%>
<tr>
<td>There is no any files in the database...</td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
second.jsp
<form action="" method="post">
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
String id=request.getParameter("file");
out.println("id = "+id);
%>
<input type="submit" name="submit" value="submit>
</form>
существует много способов передачи переменной, такой как
session.setAttribute()
session.getAttribute
action "xxx.jsp?variable=1"
Есть много вариантов передачи значения от одного jsp к другому. Вот некоторые
1) Добавление этого в качестве скрытой переменной и указание значения
<input name="file" type="hidden" value=""/>
2) Добавление его в сеанс и извлечение переменной сеанса
session.setAttribute("file", value);
3) Передача этого в качестве запросаПараметр
http://......one.jsp?file=""
Это потому, что вы повторяете цикл здесь,
for(int i=0;i<list.length;i++){
s[i]=list[i].toString();
String fi=list[i].getName();
поэтому он выведет последний элемент из цикла, чтобы получить имя u, нажатое на кнопку, попробуйте это. Измените эту строку как
<input type="text" name="file" value="<%=s[i] %>">
в виде,
<td><input type="button" class="btn" data-reqno=value="<%=s[i] %>" value="file name">
И обрабатывайте его с помощью jQuery, как это, так что вы можете передать значение в следующий JSP,
<script type="text/javascript">
$(document).ready(function () {
$(".btn").click(
function() {
var selectedFileName = $(this).attr("data-reqno");
var urlToApprove = "/yourApp/req/filename?name=" + selectedFileName;
}
);
});
</script>
А также старайтесь избегать Scriptlets в JSP, вы можете использовать JSTL или El для той же цели. Надеюсь, поможет !!
Один из способов - использовать сеанс, описанный javaBeginner.
вы также можете создать "на лету" и отправить его.
напишите функцию, подобную этой, и используйте ее в своем успехе:
function submitValues(url, params) {
var form = [ '<form method="POST" action="', url, '">' ];
for(var key in params)
form.push('<input type="hidden" name="', key, '" value="', params[key], '"/>');
form.push('</form>');
jQuery(form.join('')).appendTo('body')[0].submit();
}
использовать queryString
URl: http://myaddress.com/xyz?name=jill&sex=f
String someName = request.getParameter("name") ;
String sex = request.getParameter("sex") ;
First Jsp: заданное значение на первой странице
request.setAttribute("name",somevalue);
Второй Jsp: Получить его на второй странице
request.getAttribute("name")
first.jsp
воsecond.jsp
, точно?