質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaServer Faces

JavaServer Faces(JSF)はJavaをベースとしたコンポーネントベースのwebアプリケーション開発用のフレームワークです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

629閲覧

Java(JavaServer Faces)での画面側からの配列の受け取り方

KJ17

総合スコア11

JavaServer Faces

JavaServer Faces(JSF)はJavaをベースとしたコンポーネントベースのwebアプリケーション開発用のフレームワークです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/03/10 07:22

編集2022/03/10 11:18

画面から配列のパラメータを渡したときの、Java側の受け取り方の記述が分かりません。

【画面】
"searchdate"と"employeeNo[]"を引数で渡します。

http://…/testapi/search?searchdate=2022-03-11&employeeNo[]=001&employeeNo[]=002&employeeNo[]=003

【Java】
@Path("testapi")
@GET
@Produces({MediaType.APPLICATION_JSON})
public List<testclass> search(
@NotEmptyString
@Dating
@QueryParam("searchdate") String searchdate,
@QueryParam("employeeNo[]") String[] employeeNo
)

アノテーションの記載がまずいのか、"employeeNo[]"がうまく受け取れず404NotFoundが帰ってきます。
画面側はPOSTMANを使用して、テストしています。

配列ではなく、String文字列にすればうまくいくので、"employeeNo[]"以外のマッピングは問題ありません。
どのように記載すれば配列で受け取れるのでしょうか?

よろしくお願いいたします。

※追記
QueryParam("employeeNo[]") String[] employeeNo
の[]を外して、
QueryParam("employeeNo") String employeeNo
とすれば、apiが呼ばれましたが、employeeNoの中はNullでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2022/03/10 07:31 編集

urlエンコードせんの? あとなんで角括弧つけてんの? てか404なら呼び名がちがってんじゃ?
KJ17

2022/03/10 08:11

ご回答ありがとうございます。 urlエンコードはしません。角括弧はJava側でしょうか?配列なので必要かと思い、つけていますが、そこら辺がよくわかっていません・・・。括弧を外せば↓呼ばれましたが、employeeNoはNullでした。 @QueryParam("employeeNo") String employeeNo 呼ばれていることは確認できているので、呼び名は合っていると思います。 よろしくお願いいたします。
m.ts10806

2022/03/10 09:55

GETならURL直打ちでアクセスできるのでPHP関係ない操作と思います。 ※POSTでもあくまでAPIなのでPHPでなければならないわけではないという意味
KJ17

2022/03/10 10:56

仰る通り、システムはPHPで構築していますが、質問の箇所だけでいえばPHPは関係ありませんね。ややこしいかもしれないので、修正しておきます。ありがとうございます。
takasima20

2022/03/10 12:33

urlの方は括弧つけたままスか?
KJ17

2022/03/10 23:51

配列で渡すときは、[]が必要という認識でした。 https://qiita.com/yama-t/items/a4f940ecd7d79f27232a []を外して送ると、先頭の"001"だけ渡ってきています。 @QueryParamの書き方だと配列は受け取れないのでしょうか?
takasima20

2022/03/11 11:55

理解しました。括弧が不要という件は忘れてください。 で、やはりURLエンコードが必要なようです。 ただし、それをやってうまくいくかはJSFを知らないので分かりません。
guest

回答1

0

自己解決

結局、GETで配列をパラメーターで受け取れるのかは分かりませんでしたが・・・
「HttpServletRequest.getParameterValues」で取得は出来たので、これで実装します。

投稿2022/03/14 06:25

KJ17

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問