同じサーブレットに検証を実行させることは可能ですか?ここで何らかの再帰を利用する必要があるようですが、電子メールボックスに何かを入力して[送信]をクリックすると、電子メールパラメータは空白のままになります。[送信]をクリックすると、URLが次のように変わります。http://localhost/servlet/EmailServlet?Email=test
ページEmail: null
にテキストボックスが表示されますが、検証機能が実行されることを期待していました(つまり、nullではありません)。このタイプの再帰的な動作を実現することは可能ですか?
public class EmailServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String theForm =
"<FORM METHOD=\"GET\" ACTION=\"EmailServlet\">\n<INPUT TYPE=\"TEXT\" NAME=\"Email\"><P>\n"
+ "<INPUT TYPE=\"SUBMIT\">\n</FORM>";
String email = (String) request.getAttribute("Email");
// Bogus email validation...
if( email == null )
{
out.println("Email: " + email + "\n" + theForm);
}
else if(emailAddressNotBogous(email))
{
out.println("Thank you!");
}
else
{
out.println("“Invalid input. Please try again:\n" + theForm);
}
out.flush();
}
}
更新:受け入れられた回答が指摘したように、コードにエラーがありました。getAttributeをgetParameterに変更すると、「問題」が修正されます:)。
文字列メール= (文字列)リクエスト。getAttribute getParameter( "Email");