2

JSP からサーブレットに移動してから、同じ JSP に戻る必要があります。問題は、戻ってきたときにすべてのテキスト フィールドが空であることです。

どうすればこれを解決できますか? ノート:

  1. フォームにはmethod='post' enctype='multipart/form-data'.
  2. ボタンを使用して送信しています。これらは、javascript 関数 onclick を実行する通常のボタンです。この関数はテキスト フィールドを検証し、すべて問題なければ関数を呼び出してsubmit()フォームを送信します。
  3. サーブレットからの復帰は、次のコードで行われています。

    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);
4

1 に答える 1

1

inメソッド<input>からデータを読み取り、データをリクエスト スコープにプッシュ/バインドします。requestdoPost<input>

サンプル.jsp


<form method="post" action="servlet_url">
  No   : <input type="text" name="no" value="${requestScope.no}"/>
  Name : <input type="text" name="name" value="${requestScope.name}"/>
  <input type="submit"/>
</form>

とコードでdoPost

String no=request.getParameter("no");
String name=request.getParameter("name");

//other statements

request.setAttribute("no",no);
request.setAttribute("name",name);

RequestDispatcher rd = request.getRequestDispatcher("/sample.jsp");
rd.forward(request, response);
于 2012-09-18T02:40:49.553 に答える