アプリ版:「スタンプのみでお礼する」機能のリリースについて

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

A 回答 (5件)

ボタンというのはフォームのサブミットボタンのことですよ?


つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

この回答への補足

説明が少なくてすみません。

ボタンはサブミットボタンの事で、画面遷移が起こる事が前提です。

要求パラメータの方法については確認しました。ありがとうございます。

最終的な用途としては、
ボタンはA、B、Cなど3つあり、
たとえば、Aボタンは入力値を保持するが、Bボタンでは入力値をクリアするなどとなります。

要求パラメータや条件や、セッションなどを絡ませる事で、
できるのではないかなと考えてます。

補足日時:2012/05/01 17:45
    • good
    • 2

1.について



Strutsなどを使わない普通のJSP/Servretであるのならば
(使っても)
Beanを使うのが普通でしょう。

内容的にけっこう古いですが
http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp0 …
とか参考になるんじゃ

この回答への補足

参考にします。
どうも、ありがとうございます。

補足日時:2012/05/03 00:45
    • good
    • 1

>Aボタンは入力値を保持するが、Bボタンでは入力値をクリアする



サブミットボタンが複数ある場合、サブミットボタンにも要求パラメータの
名前と名称を付けることが出来ます。

ボタンは押したボタンの要求パラメータのみが送信されますので、サーバ側で
要求パラメータの名称と値の有無を判別すればどのボタンが押されたか判ります。

で、繰り返しますが、セッションは出来る限り使わないようにするのが基本です。
できるだけ、ブラウザ側で保持し、都度サーバに要求パラメータとして送信するのが
基本です。

サーバ側での状態保持を多用してしまうと、バックボタンが押されたときどうするかとか、
結構悩ましい設計上の問題が噴出します。ご注意を。

この回答への補足

セッションを使わない事と、
皆さんから回答いただいた事をベースに作ってみます。
ありがとうございました。

補足日時:2012/05/03 00:44
    • good
    • 0

ボタンごとに値の保持、クリアを変えたいのであれば、サーバ側でボタンごとのif文を書けばよいと思います。


そこでクリアしておけば、前に回答した方法がそのまま使えます。

ps.ちなみに値のクリア、復元は<input type="reset">を使う手もあります。あくまで初期状態に戻す、という動作をするので、最初から値が入っている場合は、その値に戻るだけですが。。

この回答への補足

わかりました。ご回答ありがとうございます。

補足日時:2012/05/03 00:43
    • good
    • 1

それはエラーがあって、同じ画面に遷移してきた時に、値をリストアするという用途でしょうか?


そういう場合は、最初の表示の際も変数の値を出力するようにしておきます。
変数に値が設定されていなければ何も出ません。

例)
<input type="text" name="inputtext" value="${textVal}">

この回答への補足

tknakamuriさんの補足しましたが、

用途としては、以下のようになります。

ボタンはA、B、Cなど3つあり、
たとえば、Aボタンは入力値(テキスト、コンボ、リスト)を保持するが、
Bボタンでは入力値をクリアするなどとなります。

特にエラーとの絡みは今の所、直接的に考えていません。

まず、jsp初心者という事もあり、
入力値を保持するのが、どのようにするのが適切かよく分かってませんでしたので質問しました。

用途を実現するには、どのようにすれば良いのかと言う所も
まだ、おぼろげながらと言う所ではあります。

補足日時:2012/05/01 17:53
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A