- PR -

session・requestで取得する・・・NULLと””について

投稿者投稿内容
キャサリン
会議室デビュー日: 2004/01/19
投稿数: 18
投稿日時: 2004-02-05 10:20
req.getParameter("LOGIN_ID");や
wkLoginID=(String)session.getAttribute("LoginID");
で取得する値が入っていない場合、それを画面に表示したらnullと表示してしまいます。

setやgetの時に、nullだったらスペースを入れるなどと処理をやっても、
またその値を表示した場合に、nullと表示されてしまいます。

nullと""は同じ値なのでしょうか?
それと回避できる方法はありますでしょうか?
よろしく御願いいたします。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-02-05 10:33
Nullと""は全然違いますよー。

request.getParameterやgetAttributeなどで
格納されていないkey(ここで言うLOGIN_IDとか?)
を指定するとNullが取れます。

それを表示したらnullと表示されます。

>setやgetの時に、nullだったらスペースを入れるなどと処理をやっても、
>またその値を表示した場合に、nullと表示されてしまいます。

どういう処理しているか具体的にわからないのですが、こういう
ことやってれば変換されるハズですけどねぇ。

例えば私なんかは

コード:
public static String getNotNullString( String str ) {
 if ( str == null ) {
  return "";
 }
 return str;
}



なんていうメソッドかませて変換させたりしてますけど。

String str = Util.getNotNullString( request.getAttribute( "HOGE" ) );

こくぼ
大ベテラン
会議室デビュー日: 2003/08/11
投稿数: 229
お住まい・勤務地: 国境の南、太陽の西。
投稿日時: 2004-02-05 10:45
こんにちは。

<c:out>タグを使えばNullは表示されないようになったような気がします。
キャサリン
会議室デビュー日: 2004/01/19
投稿数: 18
投稿日時: 2004-02-05 10:55
(株)ぽちさんありがとうございます。
私が書いているのはこんなソースです。
public void setJOB_NAME(String Wkdata){
if (Wkdata==null){
Wkdata="";
}
wkJOB_NAME=Wkdata;
}
言われたとおりにやってみたのですが、やはりnullで表示されてしまいました 涙。
もう少し調べてみます。
ありがとうございました
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-02-05 11:12
引用:

キャサリンさんの書き込み (2004-02-05 10:55) より:
(株)ぽちさんありがとうございます。
私が書いているのはこんなソースです。
public void setJOB_NAME(String Wkdata){
if (Wkdata==null){
Wkdata="";
}
wkJOB_NAME=Wkdata;
}
言われたとおりにやってみたのですが、やはりnullで表示されてしまいました 涙。
もう少し調べてみます。
ありがとうございました



これってJSPの中でやっているソースですか?

JSPの中でメソッド定義するのには特殊な定義の仕方が
あったような・・。<%! %>でしたっけ・・。使ったこと
ないんで微妙です。

あとそのメソッドの中のwkJOB_NAMEという変数が私には
理解できないのですが。。
その変数は一体どこから来ているものでしょうか。
キャサリン
会議室デビュー日: 2004/01/19
投稿数: 18
投稿日時: 2004-02-05 11:21
返答ありがとうございます。
これは、Beansの中で書いているソースです。。。説明が足りなくて申し訳ないです。
サーブレットで
db.setJOB_NAME(req.getParameter("JOB_NAME"));
BEANSで
public void setJOB_NAME(String Wkdata){
if (Wkdata==null){
Wkdata="";
}
wkJOB_NAME=Wkdata;
}

wkJOB_NAMEはBEANS内で使っている変数です。。。
初心者なので大事な部分が抜けているかもしれないです。
とりあえず、(株)ぽち様の関数を使わせて頂いて、
sessionの部分は、nullが表示されないようになりました。
あとは、サーブレットとbeans間のリクエスト部分だけです。
ありがとうございました。
yuzy
大ベテラン
会議室デビュー日: 2002/02/14
投稿数: 117
投稿日時: 2004-02-05 11:59
public void setJOB_NAME(String Wkdata){
if (Wkdata==null){
Wkdata="";
}

Javaでは、こんなことやってもWkdataの値は変わりませんよ。
アドレス渡しのC言語とは違います。
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-02-05 12:56
> Javaでは、こんなことやってもWkdataの値は変わりませんよ。
> アドレス渡しのC言語とは違います。

なにを勘違いしておられるのかわかりませんが、もちろん変わります。
Cで、
void setJOB_NAME(struct hogeBean* bean, char* wkdata)
{
if(wkdata == NULL){
wkdata = "";
}
bean->wkJOB_NAME = wkdata;
}
とするのと同じ同じです。

キャサリンのコードであれば、setJOB_NAME(null)された場合に
wkJOB_NAMEの値は "" になります。
getJOB_NAME() から 表示までのコードを疑った方が良いでしょう。
(あるいは、setしたBeanとgetしたBeanが同一ではないのかも?)

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