2

私がやりたいこと:

多くのフィールド(ニックネーム、メールアドレス、名前、名前など)を含むフォームがありますが、他のフィールドに入力できるようにするには、ユーザーは最初にニックネームとメールアドレスを入力する必要があります(これは、チェックしたいためです)ニックネームとメールは、他のクライアントが残りの情報(名前、名前など)を紹介する前に使用されていません。したがって、ユーザーはニックと電子メールを紹介し、「検証」という名前のボタンを押す必要があります。値が使用可能な場合(検証が成功)、残りのフィールドが有効になり、ユーザーはフォームへの入力を続行できます。それ以外の場合、フィールドはそのままです。無効になり、エラーがユーザーに表示されます。

フォームはJSPに配置され、サーブレットに送信されます。サーブレットに入ると、フォームにある情報を検証する必要があります(このサーブレットに.JARファイルが含まれている場合、検証は関数の呼び出しで構成されます。そのライブラリから、関数はブール値を返します)次に、検証関数の結果を表すブール値を同じJSPに戻す必要があります。ここで、JSPで、残りのTextFieldを有効にする必要があります(ブール値によっては無効にする必要があります)。

これが正しいかどうかはわかりませんが、ボタンを使用して送信すると同時に、検証後にサーブレットがJSPに返すこのブール値を使用するjavascript(onclick)を実行しようとしました。javascriptは、ブール値を評価するIF文で構成されており、それがtrueの場合、JSPのすべてのフィールドが有効になります。

これまでの問題:

ニックネームと電子メールをJSPからサーブレットに送信して値の検証を行うことができました。ブール値がありますが、サーブレットから同じJSPに送信して使用する方法がわかりません。情報の送信に使用したのと同じボタンのonclickイベント。これが可能かどうかさえわかりません...

誰かが私にこれを手伝ってくれたらありがたいです。私はJavaプログラミングの初心者なので、可能であれば簡単な説明をいただければ幸いです。また、私がやりたいことをもっとうまくやる方法があれば、それを共有してください。疑問がある場合は、質問してください。私はそれをよりよく説明しようとします。

4

3 に答える 3

2

JavaScript はまったく必要ありません。

サーブレットでは、検証結果をリクエスト コンテキストに保存できます。

req.setAttribute('checkResult', checkResult);

reqタイプHttpServletRequestで、checkResultBooleanです。

次に、JSP に転送できます。

RequestDispatcher dispatcher = req.getRequestDispatcher("/your.jsp");
dispatcher.forward(req, resp);

checkResultJSP では、リクエスト コンテキストに設定した属性に応じて、フォーム要素を読み取り専用として設定できます。

<textarea name="text" cols="50" rows="10" 
  <%= request.getAttribute("checkResult") != null && request.getAttribute("checkResult") ? "" : "readonly" %>
>...</textarea>

したがって、チェックが有効でない場合、<textarea>要素にはreadonly属性が含まれます。それ以外の場合readonlyは存在しません。

于 2012-09-13T16:03:52.513 に答える
1

Roy が述べたように、AJAX はあなたの問題に最適です。DWRが使える!、通常のJavaクラスをAJAXサービスとして利用できるようにし、それらのメソッドを呼び出して結果を取得するだけです. とても簡単。

于 2012-09-13T01:36:55.543 に答える
0

responseTextAJAXは、フォーム全体を送信する必要がなく、検証フラグをプレーンまたは適切な形式で返送できるアプリケーションに適していると思いますresponseXMLjQueryまた、AJAXリクエストをすばやく簡単に送信するのに役立つような多くの優れたJavaScriptライブラリを使用できます。

于 2012-09-13T01:26:27.913 に答える