- PR -

[JSP]条件分岐によりコードを実行させたくない場合

1
投稿者投稿内容
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-07-07 14:19
こんにちわ。

以下のようなケースの場合どのようにすればスマートか困っています。

[ケース1]
 Aという変数がnullだった場合、テキストボックスを表示しない

[解]
コード:
 if ( A != null ) <input type="text" name="name" value="">




上記ではなんら困りません。
では以下は?

[ケース2]
 Aという変数がnullだった場合、テキストボックスを表示しない。
 Aという変数がnullでない場合、テキストボックスを表示し、かつ
 テキストボックスにはBの変数値が表示されている。

[解]
コード:
 if ( A != null ) <input type="text" name="name" value="<%= B %>">



こうなるのですが、これではダメみたいで困っています。
何がダメかというと、Aがnullの場合でも<%= B %>というコードが
実行されてしまうからです。

そうするとHTMLソースとして

B">

というように、<%= B %>以降が処理されこちらの意図しない結果となります。


[ケース2]で挙げているようなケースではどのように対処するのでしょうか?
ジュニア
会議室デビュー日: 2003/05/01
投稿数: 16
投稿日時: 2003-07-07 14:38
<% if ( A != null ) { %>
<input type="text" name="name" value="<%= B %>">
<% } %>
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-07-07 14:50
ここは素直に・・・

<%
if (A != null){
out.print ("<input type=\"text\" name=\"name\" value=\"" + B + "\">");
}
%>

却下でしょうか?(苦笑)。


[ メッセージ編集済み 編集者: Ken-Lab 編集日時 2003-07-07 14:54 ]
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-07-07 14:57
ジュニア様 Ken-Lab様

ありがとうございます。

僕が、JSPが吐くjavaコードをしっかりと理解していなかった
ことがそもそもの原因だったようですね。。

普通に1行しか頭にありませんでした。

ジュニア様の記述のようにすれば難なく期待通りの処理になりました。
# 実際のjavaコードは複数行なんですよね・・。
# 失礼しました。。

JSP = 実体はservletということが頭にしっかりないとダメですね。
1

スキルアップ/キャリアアップ(JOB@IT)