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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

2回答

2452閲覧

親子関係のある画面での値の持ち方について

cha-ra

総合スコア40

Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2015/11/04 03:03

あるWebアプリケーションの連続する画面間において、
上位画面で入力・取得した値を持ち回りたい場合に、
どの様に値を保持するのがベターなのでしょうか?

今自分で考えているのは以下のパターンで、
②か③の方法で実装しようと思っていますが、
②は上位画面の変更・差し替えには弱い様に思えますし、
③がいいのかな?と漠然と考えています。

①親子共に同じデータ(または必要な分のデータ)を持つ。
データの受渡しはコンストラクタに親画面を渡すか、
アクセッサだけで渡すかのいずれか

Java

1class Parent { 2 int id; 3 String code; 4 String name; 5} 6 7class Child { 8 9 Child () { 10 } 11 12 Child (Parent parent) { 13 this.id = parent.id; 14 this.code = parent.code; 15 this.name = parent.name; 16 } 17 18 int id; 19 String code; 20 String name; 21 22 int getId() { 23 return this.id; 24 } 25 26 String getCode() { 27 return this.code; 28 } 29} 30 31class Grandson { 32 Grandson() { 33 } 34 35 Grandson(Parent parent) { 36 this.id = parent.id; 37 this.code = parent.code; 38 } 39 40 Grandson(Child child) { 41 this.id = child.id; 42 this.code = child.code; 43 } 44 45 int id; 46 String code; 47}

②子孫はその上位クラスのフィールドを持つ場合
データのアクセスは親クラスを通す

Java

1class Parent { 2 int id; 3 String code; 4 String name; 5} 6 7class Child { 8 Child (Parent parent) { 9 this.parent = parent; 10 } 11 12 Parent parent; 13 14 int getId() { 15 return parent.id; 16 } 17 18 String getCode() { 19 return parent.code; 20 } 21} 22 23class Grandson { 24 Grandson (Child child) { 25 this.child = child; 26 } 27 Child child; 28}

③子孫は何かしらの上位クラスのフィールドを持つ
データのアクセスはインターフェースを通す

Java

1interface ParentInformation { 2 int getId(); 3 String getCode(); 4 String getName(); 5} 6 7class Parent implements ParentInformation { 8 int id; 9 String code; 10 String name; 11 12} 13 14class Child implements ParentInformation { 15 Child (ParentInformation parent) { 16 this.parent = parent; 17 } 18 19 ParentInformation parent; 20 21 int getId() { 22 return parent.getId(); 23 } 24 25 String getCode() { 26 return parent.getCode(); 27 } 28} 29 30class Grandson { 31 Grandson (ParentInformation parent) { 32 this.parent = parent; 33 } 34 ParentInformation parent; 35}

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

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

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

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

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

guest

回答2

0

DataBeanを用意して、ActionクラスとかではじめにDataBeanをRequestから取得し、
(必要なら設定しなおして、)Requestにセットしなおして画面復帰すればいいのではないでしょうか?
同じDataBeanで値をそのまま受け渡すことはできると思いますよ。

雑談:
なんか、親子画面といわれると、Javascriptでポップアップした画面と元の画面なイメージでした^^;

投稿2015/11/04 05:16

kaputaros

総合スコア1844

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

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

cha-ra

2015/11/04 05:32

Requestにセットし直すということは、 子孫画面の処理で親画面のDataBeanを、呼び出す必要がありますよね。 出来れば親を意識させずに、子孫は子孫で処理をしたいなぁと思ってます。 ただ、初めて子孫の画面を開いた際には、開く前の画面から情報を貰う必要があるので、 もしかしたらその時だけは親画面を意識した処理になるかもしれないですね。 ※タイトルの親子画面という付け方は紛らわしかったですね、すみません。
guest

0

class agamen { string a,b,c; } class bgamen { string a,d,f; } class cgamen { string b,d,w; } コード

各画面用のbean よういして、同じ項目は同じ名前で定義して、beancopy なりで移動させればいいのでは?

投稿2015/11/04 03:29

ipadcaron

総合スコア1693

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

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

cha-ra

2015/11/04 05:35

そんな便利な方法もあるのですね。 深い階層のオブジェクトなどでもコピー出来そうなら検討してみたいですが、 何処で値が設定されているのか検索でヒットしなさそうな所がネックかもしれないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問