- PR -

サブミットされたクエリ(パラメータ)数を取得する方法

1
投稿者投稿内容
初心者たろう
常連さん
会議室デビュー日: 2005/10/13
投稿数: 30
投稿日時: 2007-01-18 11:45
お世話になります。
質問なのですが、フォームのパラメータ数を取得するための何かよい
メソッドや方法はありますでしょうか?
それらしき、メソッドがなかったので相談いたしました。
ご回答お待ちしております。


[ メッセージ編集済み 編集者: 初心者たろう 編集日時 2007-01-18 12:49 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-18 12:09
サブミットする前に、フォーム内にいくつパラメータが HTML 内に記載されているか、ではなく、サブミットされたクエリのパラメータ数ですよね?

全てのパラメータを取得する API がありますので、その API で取得したパラメータの要素の数を数えれば良いかと思います。

[ メッセージ編集済み 編集者: インギ 編集日時 2007-01-18 12:10 ]
初心者たろう
常連さん
会議室デビュー日: 2005/10/13
投稿数: 30
投稿日時: 2007-01-18 12:31
返信ありがとうございます。
質問の意味を抽象的で申し訳ないです。
質問内容はインギさんのおっしゃるとおり「サブミットされたクエリのパラメータ」です。
現在開発環境が整ってなく実行することができなのですが、
以下のようにコーディングしてみました。

Enumeration enu = request.getParameterNames();
long cnt = (long)enu.length;

のようなイメージでよろしいでしょうか。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-18 12:43
はい、直接パラメータ数を取得する API はなさそうなのでそんな「イメージ」になります。

Enumeration から直接長さは取得できない点と、敢えて long にキャストする必要がなさそうなのが気になりますが。

>質問内容はインギさんのおっしゃるとおり「サブミットされたクエリのパラメータ」です。
なるほど、するとスレッドのタイトルも変えてはいかがでしょうか?同じ問題にぶつかった人が後々参考にしやすくなりますよ。

[ メッセージ編集済み 編集者: インギ 編集日時 2007-01-18 12:44 ]
初心者たろう
常連さん
会議室デビュー日: 2005/10/13
投稿数: 30
投稿日時: 2007-01-18 12:55
ご返信ありがとうございます。タイトルも早速変えました。
>Enumeration から直接長さは取得できない点と、敢えて long にキャストする必要が>なさそうなのが気になりますが。
やりたいと思っていた事がございまして、

Enumeration enu = request.getParameterNames();
for(i=0;i<enu.length;i++){・・・}

のenu.lengthに設定しようと思ってたのです。特にキャストする必要なかったみたいですね。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-18 14:13
「Enumeration から直接長さは取得できない点」は Enumeration インターフェースに length というフィールドがないことを意味しています。

「敢えて long にキャストする必要がなさそう」というのは long 型ではなく、int 型で良いでしょうという意味です。
#恐らくパラメータの数が 2147483647 個を超えると言うことはないでしょうから

まずは「手を動かして」みてください。その方が理解が早まると思います。javac が色々と教えてくれます

[ メッセージ編集済み 編集者: インギ 編集日時 2007-01-18 14:13 ]
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-01-18 14:34
引用:

初心者たろうさんの書き込み (2007-01-18 12:55) より:

Enumeration enu = request.getParameterNames();
for(i=0;i<enu.length;i++){・・・}



java.util.Enumerationを見れば分かるとおり、lengthなんてありません。

従って、
引用:

のenu.lengthに設定しようと思ってたのです。特にキャストする必要なかったみたいですね。


キャストの有無にかかわらず、決して動くことはありません(コンパイル、通らないから)

じゃあ、どーやって長さ取り出すんだよー。
と思ったら、
javax.servlet.ServletRequestをよく読み、
メソッドが返す戻り値もリンクをたどって、リンク先の内容もよく読んでいけば、解決する糸口を見つけることができるでしょう。

まずは何より、インギさんの言うように、手を動かし、分からない点はリファレンスを読んで勉強してください。

ちなみに上記のAPIリファレンスのリンク先は英語サイトです。探せばどこかに日本語のサイトあります。
#いつもjavadocs.orgで検索してるから、英語なのよー。ごめんねー。

追記:
敬称略してた。ごめんなさい。インギさん。

[ メッセージ編集済み 編集者: かずくん 編集日時 2007-01-18 14:35 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-18 14:57
利用コードがAPIリファレンスを見ても分からないときに、
適当なわかっているキーワードでGoogle検索すると、
それなりのサンプルコードが見れます。

以下はGoogle Code Searchで検索した結果です。
http://www.google.com/codesearch?q=Enumeration+getParameterNames+lang%3Ajava&hl=ja&btnG=%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%A4%9C%E7%B4%A2

Google Code Searchはオープンソースのコードに特化した検索エンジンです。
1

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