Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

if文おかしい???

いつも世話になっております。
私がJSPのif文を書いたけど、どこかおかしいかちょっと分からないので、教えてください。
<% String search=request.getparameter("search");
   String select=request.getparameter("select");
//場合1: search="a";
//       select=null;
//場合2:search=null;
//      select="b";

String name="";

if(search!=null){
name=search;
}else{
name=select;
}
%>

問題:場合1ではちゃんとname=searchですが,場合2でもname=searchになってしまうので、なぜなら分からないので
みんなさん教えてください。ありがとうございます。

20

回答

5314

閲覧

20件の回答

評価

0

まず
getparameter
でなくて
getParameter

実際に最初の2行の直後
変数search、selectに
何が入っているか確認してみたら
いいと思うの

評価

0

実際out.println(search)とout.println(select)
をチェックしてみて、場合1と2のみたい結果出たけど。

評価

0

それだけ?

こういう場合、俺だったら、
他人よりもまず自分を疑うけどね。

評価

0

誰かが原因を分からないですか?

評価

0

本国の掲示板で聞いたら?

評価

0

if(search!=null){
じゃなくて
if(search.length() != 0){
にするとか

評価

0

もし、ゆう氏の指摘の通りで解決したなら、
以下はウ▽だったか、試してもみなかったか、どっちかということになる。

>実際out.println(search)とout.println(select)
>をチェックしてみて、場合1と2のみたい結果出たけど。

評価

0

やってみたけど、結果は変わらないね。

評価

0

まず確実にいえること
<% String search=request.getparameter("search");
   String select=request.getparameter("select");
//場合1: search="a";
//       select=null;
//場合2:search=null;
//      select="b";

String name="";

if(search!=null){
name=search;
}else{
name=select;
}
%>


getparameterのつづりがおかしいのは
とりあえずおいておくとして
上記のロジックでは
問題で挙げているような問題は起きない。
つまりおかしいところは
質問と言うことになる。

つづりがおかしいので動作するはずないから
間違いなくこのロジックは
実際に問題が発生しているロジックとは
同じものではないはずなので
ここに記述していないどっか別の場所が原因。

評価

0

張るとしたら、どっちかかなあ。

1.転記の時に、問題のある箇所が直ってしまった。
2.騙りが茶々を入れている。

評価

0

いろいろ試してみたけど、なかなか原因を分からないので困っています。

評価

0

原因を調べてあげたいけど
情報がなさ過ぎて無理

評価

0

日本人には思えないよ、文章が。

評価

0

●ポイント1
日本語が変なので、言いたい事がなかなか伝わらない。
日本語の勉強中と思われますので、今後の成長に期待します。

●ポイント2
質問内容が、良くわからないし、何がしたいのかも伝わってこない。

やりたい事、現状、期待する動作を、わかりやすく説明してみてください。

●推測
推測ですが、たぶんStringデータが空であるかどうかの判定をしたいのではないでしょうか?

でしたら、
if ((search != null) && (search.equals("") != false))
とすると良いんじゃないかな。

評価

0

あー、なるほどねえ…。
「パラメータなし」と「空パラメータ」の違いが分かってないってことか。

<input/>等のフォーム要素が存在する場合、入力しなくても文字列は送られてるんだよ。


>(search.equals("") != false))

!= falseは余計。

評価

0

すいません、間違いでした。

間違い)if ((search != null) && (search.equals("") != false))

正しい)if ((search != null) && (search.equals("") == false))

評価

0

booleanに==や!=を使うのは無駄。
ま、最適化されるだろうけど。

評価

0

>無駄
のように見えるけど、取っちゃうと、意味が逆になる。
フツーのやり方知らないのかな。

しかし、最初に見たとき、
一瞬、背筋が凍ったわ・・・(|||´Д`;

お願いだ、こうしてくれ。m(_ _)m
たのむ。(-人-)

if ((search != null) && !search.equals(""))

評価

0

JDK6からだったか、isEmpty()つーメソッドもある。
やってることは、length()==0と同意だが。

評価

0

なんとなーく思ったんですが、
paramが小文字なのは置いておいても、
そんなに問題はないと思うのですよ。
それで"変わらない"となると…

jspで、コメント部分を変えてTomcat(かなぁ)を再起動させても、
昔の方が生きてることがあるじゃないですか。
その辺はどうなんでしょう。

一度、二つjspを作って、
別のディレクトリにおいて、
表示させてみたらどうだろう。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。