JSPでのif-elseの使用

以下のコードを使って、ユーザーの名前をブラウザに表示しています。

<body>
  <form>
    <h1>Hello! I'm duke! What's you name?</h1>
    <input type="text" name="user"><br><br>
    <input type="submit" value="submit">    
    <input type="reset">
  </form>
  <%String user=request.getParameter("user"); %>
  <%if(user == null || user.length() == 0){
    out.print("I see! You don't have a name.. well.. Hello no name"); 
   }
   else {%>
      <%@ include file="response.jsp" %>
   <% } %>    
</body>

response.jsp:

<body>
    <h1>Hello</h1>
    <%= request.getParameter("user") %>
 body>

実行するたびに、メッセージが

なるほど!と思いました。名前がありませんね...さて...。名無しさん@おーぷん

は、テキストボックスに何も入力していないのに、表示されてしまいます。しかし、何か入力するとresponse.jspのコードが表示されるのですが、実行時に最初のメッセージを表示させたくありません。どうしたらそうなるのでしょうか?私のコードの変更を提案してください。

追伸:いくつかの質問で、nullとの等しいかどうかをチェックする代わりに、等しくないかどうかをチェックしなければならないと読んだのですが、そうすればnullポインタ例外を投げることはありません。

JSPにスクリプトレットを使用しないことが推奨されています。 スクリプトレットは良くないものとされています。 その代わりに、JSTL (JSP Standard Tag Library) と EL (Expression Language) を組み合わせて、条件付きのロジックを実行するようにしてください。 また、JSTLには、ループ処理などの重要な機能も含まれています。

その代わりに




使用してください。



        I see!  You don't have a name.. well.. Hello no name




また、コードのどこかでresponse.jspを使用する予定がなければ、それ以外の記述の中にhtmlを含めるだけの方が簡単かもしれません。


    <h1>Hello</h1>
    ${user}

また、注意点があります。 coreタグを使用するには、以下のようにインポートする必要があります。

ユーザがユーザ名を入力したときに、メッセージを表示するようにしたいとします。 最も簡単な方法は、"user" パラメーターが null の場合にはメッセージを一切表示しないことです。 ユーザーが null を入力したときにエラーメッセージを表示するように、何らかの検証を行うことができます。 これは、この問題に対するより標準的なアプローチです。 これを実現するには

スクリプトレットで

 0 ) {

   }
%>

jstlでは



解説 (2)

if-else条件の代わりに、両方の条件にifを使用します。そのように動作しますが、理由はよくわかりません。

解説 (0)

この例を参考にしてみてください。


  <h1>Hello! I'm duke! What's you name?</h1>
  <input type="text" name="user">
  <br>
  <br>
  <input type="submit" value="submit">    
  <input type="reset">

<h1>Hello ${param.user}</h1> 
解説 (0)