JSP からサーブレットに移動してから、同じ JSP に戻る必要があります。問題は、戻ってきたときにすべてのテキスト フィールドが空であることです。
どうすればこれを解決できますか? ノート:
- フォームには
method='post' enctype='multipart/form-data'
. - ボタンを使用して送信しています。これらは、javascript 関数 onclick を実行する通常のボタンです。この関数はテキスト フィールドを検証し、すべて問題なければ関数を呼び出して
submit()
フォームを送信します。 サーブレットからの復帰は、次のコードで行われています。
RequestDispatcher rd = request.getRequestDispatcher("/altaPerfil.jsp"); rd.forward(request, response);
追加情報:
私の JSP ページは次のようなものです: https://www.taringa.net/registro。
1 つのフォームがあり、フォーム内には 7 つのテキスト フィールド、日付用の 3 つの選択フィールド (そのページとまったく同じ)、画像をアップロードするためのアップロード フィールド、2 つのフィールドと 3 つのボタンを持つ radioButton があります。
ボタンの 1 つは、ニックネームと電子メール フィールドを検証するために使用されます (ニックネームまたはメールが既に取得されている場合は false を返し、それ以外の場合は true を返します。これは、ロジックをプレゼンテーションから分離したままにしておくため、サーブレットで行われます)。
2 番目のボタンは、画像をアップロードするために使用されます。
3 番目のボタンは、すべてのフォーム (すべてのテキスト フィールドと日付) を送信するために使用されます。
最初の 2 つのボタンはサーブレットに移動し、JSP に戻る必要があります...
コード例:
(JSP)
<form action="altaPerfilServlet"
name = "frmValidar"
method='post' enctype='multipart/form-data' >
Nick:
<br />
<input type="text" name="nick"
id="nick" onkeypress="deshabilita()"
value="${requestScope.nick}" />
<input type=button name="botonValidar"
id="botonValidar" value="Validar datos"
onclick="validarNick()" />
<!--Note: the javascript validarNick() verifies the nick field and if it is -->
<!--not empty then it calls frmValidar.submit()-->
(サーブレット)
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> fields = upload.parseRequest(request);
Iterator<FileItem> it = fields.iterator();
<!--here i process all the FileItems and obtain their values-->
<!--then i talk to a java app (which acts as a server, providing -->
<!--the data and a series of classes) and obtain a boolean value(esValido)-->
<!--that tells me if the nick is available(true) or taken(false)-->
<!--finally: -->
request.setAttribute("esValido", esValido);<!-- saving the boolean -->
String nick=request.getParameter("nick");
request.setAttribute("nick", nick);
RequestDispatcher rd = request.getRequestDispatcher("/altaPerfil.jsp");
rd.forward(request, response);