【发布时间】:2021-01-22 05:06:59
【问题描述】:
如何防止jsp表单重置?我有一个将数据传递给 servlet 的 jsp 表单。如果用户在未填写所有字段的情况下按下“提交”,则会显示一条错误消息,邀请用户填写表单的所有字段。问题是当出现错误信息时,用户在表单中输入的数据被清除了。我怎样才能确保这些数据被保存并且用户不必再次重写所有内容?
我的意思是,它必须是一种允许我保持填写表单的方法,因为它必须工作,例如,即使所有字段都已填写并且电子邮件字段没有 @ 符号。
这是我的jsp:
Aggiungi un nuovo contatto
<form method="POST" action="AggiungiPersona.do">
Id: <input type="number" size="40 maxlength=40" name="id" required /><br />
Nome: <input type="text" size="40 maxlength=40" name="nome" required /><br />
Cognome: <input type="text" size="40 maxlength=40" name="cognome" required /><br />
Anni: <input type="number" size="40 maxlength=40" name="anni" required /><br />
Sesso: <input type="text" size="40 maxlength=40" name="sesso" required /><br />
Indirizzo: <input type="text" size="40 maxlength=40" name="indirizzo" required /><br />
Numero di telefono: <input type="text" size="40 maxlength=40"
name="numTel" required /><br />
Email: <input type="text"
size="40 maxlength=40" name="email" required /><br />
<br> <input type="submit" value="crea contatto">
</form>
<c:choose>
<c:when test="${error==true}">
<h3>Errore</h3>
<p>Attenzione! Inserire un'età compresa tra 0 e 100.</p>
<br> <br> <a href="./index.jsp">Torna alla HomePage</a>
</c:when>
<c:when test="${error2==true}">
<h3>Errore</h3>
<p>Attenzione! L'id che si sta cercando di inserire è già
presente in database. Scegliere un id diverso.</p>
<br> <br> <a href="./index.jsp">Torna alla HomePage</a>
</c:when>
<c:when test="${error3==true}">
<h3>Errore</h3>
<p>Attenzione! Il valore associato a "sesso" può essere solo "m",
"M", "f", "F".</p>
<br> <br> <a href="./index.jsp">Torna alla HomePage</a>
</c:when>
<c:when test="${error4==true}">
<h3>Errore</h3>
<p>Attenzione! Il numero di telefono può contenere solo numeri.</p>
<br> <br> <a href="./index.jsp">Torna alla HomePage</a>
</c:when>
<c:when test="${error5==true}">
<h3>Errore</h3>
<p>Attenzione! L'email deve contenre il simbolo '@'.</p>
<br> <br> <a href="./index.jsp">Torna alla HomePage</a>
</c:when>
<c:when test="${error6==true}">
<h3>Errore</h3>
<p>Attenzione! Tutti i campi del form devono essere compilati.</p>
<br> <br> <a href="./index.jsp">Torna alla HomePage</a>
</c:when>
<c:when test="${successo==true}">
<h3>Aggiunto nuovo contatto!</h3>
<p>
Id:
<% String id = request.getParameter("id"); out.print(id); %>
<br /> Nome:
<% String nome = request.getParameter("nome"); out.print(nome); %>
<br /> Cognome:
<% String cognome = request.getParameter("cognome"); out.print(cognome); %>
<br /> Età:
<% String anni = request.getParameter("anni"); out.print(anni); %>
<br /> Sesso:
<% String sesso = request.getParameter("sesso"); out.print(sesso); %>
<br /> Indirizzo:
<% String indirizzo = request.getParameter("indirizzo"); out.print(indirizzo); %>
<br /> Numero di telefono:
<% String numTel = request.getParameter("numTel"); out.print(numTel); %>
<br /> Email:
<% String email= request.getParameter("email"); out.print(email); %>
<br> <br> <a href="./index.jsp">Torna alla HomePage</a>
</p>
</c:when>
</c:choose>
这是我的 servlet:
/**
* @see HttpServlet#HttpServlet()
*/
public AggiungiPersona() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// verifica se esiste una sessione già creata
// se no: reindirizzo l'utente in login.html
HttpSession session = request.getSession(false);
if(session == null || session.getAttribute("loggedIn")==null || !session.getAttribute("loggedIn").equals(true)) {
response.sendRedirect("login.jsp");
return;
}
// prendo tutte le persone dal db e le metto in arrayList per poterci ciclare
// sopra e controllare se l'id inserito esiste gia nella collezione
ArrayList<Persona> listaPersone = null;
listaPersone = PersonaQuery.getPersone();
boolean found = false;
if (request.getParameter("id") == "" || request.getParameter("nome") == ""
|| request.getParameter("cognome") == "" || request.getParameter("anni") == ""
|| request.getParameter("sesso") == "" || request.getParameter("indirizzo") == ""
|| request.getParameter("numTel") == "" || request.getParameter("email") == ""
) {
request.setAttribute("error6", true);
RequestDispatcher view = request.getRequestDispatcher("aggiungiPersona.jsp");
view.forward(request, response);
} else if ((Integer.parseInt(request.getParameter("anni")) < 0)
|| (Integer.parseInt(request.getParameter("anni")) > 100)) {
request.setAttribute("error", true);
RequestDispatcher view = request.getRequestDispatcher("aggiungiPersona.jsp");
view.forward(request, response);
} else if ((request.getParameter("sesso").charAt(0) != 'm') && (request.getParameter("sesso").charAt(0) != 'M')
&& (request.getParameter("sesso").charAt(0) != 'f')
&& (request.getParameter("sesso").charAt(0) != 'F')) {
request.setAttribute("error3", true);
RequestDispatcher view = request.getRequestDispatcher("aggiungiPersona.jsp");
view.forward(request, response);
} else if (Pattern.matches("^[0-9]*$", request.getParameter("numTel")) == false) {
request.setAttribute("error4", true);
RequestDispatcher view = request.getRequestDispatcher("aggiungiPersona.jsp");
view.forward(request, response);
} else if (!request.getParameter("email").contains("@")) {
request.setAttribute("error5", true);
RequestDispatcher view = request.getRequestDispatcher("aggiungiPersona.jsp");
view.forward(request, response);
} else {
for (Persona persona : listaPersone) {
if (Integer.parseInt(request.getParameter("id")) == persona.getId()) {
found = true;
request.setAttribute("error2", true);
RequestDispatcher view = request.getRequestDispatcher("aggiungiPersona.jsp");
view.forward(request, response);
}
}
if (!found) {
try {
PersonaQuery.aggiungiPersona(Integer.parseInt(request.getParameter("id")),
request.getParameter("nome"), request.getParameter("cognome"),
Integer.parseInt(request.getParameter("anni")), request.getParameter("sesso"),
request.getParameter("indirizzo"), request.getParameter("numTel"),
request.getParameter("email"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("successo", true);
RequestDispatcher view = request.getRequestDispatcher("aggiungiPersona.jsp");
view.forward(request, response);
}
}
}
}
【问题讨论】:
-
嗨,您将这些值存储在会话中并显示在您的表单中,或者我建议您在提交表单之前对数据进行客户端验证..使用
js。 -
非常感谢