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

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

ただいまの
回答率

88.03%

画面側の情報をサーバー側に送るときフラグを使う以外の方法を知りたい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,724

score 573

現在Java、Seasar2(SAStruts/Doma)、HTML(JSP)、jQueryを使ってDB連携をしたアプリケーションを作っています。

まだまだ初心者なのであらゆるノウハウ、アイデアを知りたいと思っています。

そこで質問があるのですが、
結論から言うと、

JSP側の情報(たとえば、パスワード切り替えボタンが表示か非表示か。など)をJava側に送るとき、hiddenでフラグを立てる以外にどんな方法があるでしょうか?


今私はJSP側の情報をJava側に送るとき、
hiddenタグでhogeFlagのようなものを作り、それをJSP側のFormタグ内に記載し、パスワード切り替えボタンが「表示」のときはvalue="0",「非表示」のときはvalue="1"のようにjQueryで制御して、その情報をJava側に送っています。ActionFormあるいはDtoにもプロパティをいちいち追加しないといけなくて困っています。

これは一例で、パスワード切り替えボタン以外にも多くの状況でフラグを立てることが多く、
複雑な画面になるとフラグまみれになって難解なコードになりがちです。


このような状況をなんとか打開したいのですが、
JSP側の情報をJava側に送るときにフラグを立てる以外で何かいい方法や発想はあるでしょうか?
状況によってやり方は変わると思うのですが、ざっくりでもいいので何か思い当たるものがあれば教えていただきたいです。
あるいはそのようなノウハウをたくさん会得する方法でも構いません。
もちろん1コードでも多く書き、多くのアプリケケーションを作ることが大切だとは思いますが、具体的な方法や効率的な勉強法が知れれば幸いです。お願いします。


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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

いくつかやり方はあるとは思いますが、一つのやり方としては
状態によって、actionのURLを変えてしまう、という方法があります。
例えば、
パスワード認証URL:/app/foo/auth/password
自動認証:/app/foo/auth/autoAuth
のように2つのURLをControllerで別メソッドで用意して
submit時にFormのactionをJSで切り替えて送信し
処理を切り分けるようなやり方です。
URLを分けることで、クラスやメソッドを切り替えることができるため
Java側の処理もオブジェクト設計がやりやすくなります。

また、根本的なところで行くと、そもそもそんなにフラグを多用するような
設計にしない、というのが大事です。
k499778さんの作られている画面が、どのように複雑なのかはわかりませんが
画面自体をもっとシンプルにする(機能ごとに画面やFormを分ける等)ことを
検討されてみてもいいかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/12 11:40

    MakotoMiyazakiさん
    返答ありがとうございます。URLを変えるという方法も試してみたいと思います!
    迅速な対応ありがとうございました!

    キャンセル

0

Seasar2には詳しくないのですが、JSP側の情報をJava側に送るためにフラグを立てなければならない理由はなんでしょうか?例えば、Java側で「パスワードフォームを表示していない」という状態を受け取りたい理由はなぜですか?

フラグを立てないでも済ませられる手段の1つにリクエスト時のパラメータ制御があります。パスワードの例で言えば、「フォームから送信する時に、パスワードフォームが非表示だったらサーバーのリクエストパラメータに追加しないようにjQueryで制御する」とか。

完全に状態を同期させなくてもいいようにアプリケーションを設計することを考えてみてはいかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/12 12:32

    kompiroさん
    回答ありがとうございます。
    フラグを立てなければならないのではなく、私が若輩者なのでそのようなやり方しか知らないので他の方法も知りたいと思い投稿しました。

    パスワードの「表示・非表示」ボタンの状態の情報をJava側で受け取りたいのは、ほんの一例ではありましたが、エラーチェックのときですかね。
    なにか登録フォームがあってそのパスワードが文字数が短いとかで入力チェックに引っかかり、画面を再表示する際に、パスワードボタンの状態をそのままに維持したいときが具体例として挙げられます。パスワードの「表示・非表示」ボタンはタグ内にshowクラスがあれば「表示」、hideクラスがあれば「非表示」に変わるといった設計です。jQueryでaddClass,removeClassを使って切り替えます。

    パラメータ制御も自分のよく陥る状況で使えないかどうか調べてみます。
    ありがとうございました。感謝しています。

    キャンセル

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

  • ただいまの回答率 88.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る