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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

10474閲覧

画面遷移、更新してもセレクトボックスの選択状態を保持したい

hamuhamukushi

総合スコア7

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/11/29 05:26

編集2019/11/29 07:08

前提・実現したいこと

登録画面でセレクトボックスを選択した状態で確認画面に遷移し、そこから「入力に戻る」ボタンでセレクトボックス選択画面に戻った際に先ほど選択した状態を保持したいです。

例)登録画面で「2」を選ぶ→確認画面に遷移→「入力に戻る」ボタン→登録画面に戻る「(「2」を選択状態)
のようにしたいです。

発生している問題・エラーメッセージ

エラーメッセージはありません。

該当のソースコード

Java

1//入力に戻る 2@RequestMapping(value="/entry/", params= "back=back", method = POST) 3 public String back(Model model, EntryBean entry,HttpServletRequest request, SessionStatus sessionStatus) { 4 sessionStatus.setComplete(); 5 HttpSession session = request.getSession(); 6 session.setAttribute("entry", entry.getNumber()); 7 entry.setNumberList(numberList); 8 model.addAttribute("entry", entry); 9 return "entry/entry"; 10 }

JavaScript

1 var arr = [ 2 {cd:"1", label:"いち"}, 3 {cd:"2", label:"に"}, 4 {cd:"3", label:"さん"}, 5 {cd:"4", label:"よん"}, 6 {cd:"5", label:"ご"} 7 ]; 8 9 window.onload=function(){ 10 for(var i=0;i<arr.length;i++){ 11 let op = document.createElement("option"); 12 op.value = arr[i].cd; 13 op.text = arr[i].label; 14 document.getElementById("number").appendChild(op); 15 } 16 }

JavaScript

1//入力に戻る 2$(function(){ 3 $('#btnBack').on('click',function(){ 4 window.backInput(); 5 return false; 6 }) 7}); 8function backInput(){ 9 $('input[name=back]').val('back'); 10 $('#entry').attr('action', '/number/entry/'); 11 $('#entry').submit(); 12}

HTML

1//登録画面の入力フォーム 2<form:select path="number"> 3<select id="number"></select> 4<span id="hiddenNumber" class="disNon"><c:out value="${entry.numberList}" /></span> 5</form:select>

HTML

1//確認画面の入力に戻るボタン 2<li><input type="button" class="btn" id="btnBack" value="入力に戻る"></li>

試したこと

こちらで検索したりして調べましたが解決せず、、

補足情報(FW/ツールのバージョンなど)

JavaScript
Java7
HTML

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

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

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

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

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

m.ts10806

2019/11/29 05:29

「入力に戻る」ボタンのhtmlと制御がわかるコードもご提示ください
hamuhamukushi

2019/11/29 05:55

失礼いたしました。追記いたしました。 よろしくお願いいたします。
m.ts10806

2019/11/29 06:05

あれ?えーっとごめんなさい伝わってなかったか どうやってそのボタンで戻ってますか?
hamuhamukushi

2019/11/29 06:35

失礼いたしました。 追記したのですがこちらで大丈夫でしょうか、、
guest

回答2

0

クッキーにでも保存しておけばよいのでは?

sample

こんな感じでどうでしょう

javascript

1<script> 2const setCookie=(key,val)=>{ 3 var tmp = key+"="+encodeURIComponent(val)+";"; 4 tmp += "expires=Fri, 31-Dec-2030 23:59:59;"; 5 document.cookie = tmp; 6}; 7const getCookie=key=>{ 8 var ret=null; 9 var params = document.cookie.split(/; */); 10 params.forEach(x=>{ 11 if(r=x.match(new RegExp("^"+key+"="+"(.*)"))){ 12 ret=decodeURIComponent(r[1]); 13 } 14 }); 15 return ret; 16}; 17const delCookie=key=>{ 18 expiredate = new Date(); 19 expiredate.setFullYear(expiredate.getFullYear()-1); 20 tmp = key+"=;"; 21 tmp += "expires="+expiredate.toGMTString(); 22 document.cookie = tmp; 23}; 24const arr = [ 25 {cd:"1", label:"いち"}, 26 {cd:"2", label:"に"}, 27 {cd:"3", label:"さん"}, 28 {cd:"4", label:"よん"}, 29 {cd:"5", label:"ご"}, 30 ]; 31window.addEventListener('DOMContentLoaded', ()=>{ 32 const number=document.querySelector("#number"); 33 arr.forEach(x=>{ 34 const op=Object.assign(document.createElement("option"),{ 35 value:x.cd,textContent:x.label}); 36 number.appendChild(op); 37 }); 38 number.addEventListener('change',e=>{ 39 setCookie('number',number.value); 40 }); 41 var v=getCookie('number'); 42 if(v) number.value=v; 43}); 44</script> 45 46<form:select path="number"> 47<select id="number"></select> 48<span id="hiddenNumber" class="disNon"><c:out value="${entry.numberList}" /></span> 49</form:select> 50<a href="next.html">next</a>
  • next.html

html

1<a href="javascript:history.back()">back</a>

投稿2019/11/29 05:29

編集2019/11/29 06:08
yambejp

総合スコア115896

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

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

hamuhamukushi

2019/11/29 05:56

ありがとうございます。 クッキーについての知識がなく、、 どのようにして保存したら良いのでしょうか?
guest

0

ベストアンサー

window.back();

これだと普通にブラウザバックになってませんか?
おそらくback()メソッドは使われていません。
ブラウザバックだとあくまで履歴から戻ることになるので、リクエスト処理的にセッションなども使われないのではないでしょうか。
POSTして戻った方が良いように思います。

投稿2019/11/29 06:48

m.ts10806

総合スコア80873

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

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

hamuhamukushi

2019/11/29 06:52

入力に戻る際は一番上のJavaのコードで戻っています。 値はentryに格納できているのですが、セレクトボックスは元に戻ってしまいます、、
hamuhamukushi

2019/11/29 07:07

失礼しました。こちら投稿の際にメソッド名を変えたためこのような表記になってしまいました。 window.back();はブラウザバックではなく、backメソッドを呼び出しています。 backメソッドのメソッド名を修正いたしました。
m.ts10806

2019/11/29 07:13

あいえ。名前の問題じゃなかったんですが。 ちなみに、その戻るボタンを押したときの挙動を確認しましたか?デバッグモードで起動してどこを通ったか確かめてみてください
hamuhamukushi

2019/11/29 07:22

デバックモードで試しましたが一番上のJavaのコードで返っています
m.ts10806

2019/11/29 07:36

なるほど。しかし毎回EntryBeanから拾ってたら中身常に空ですよね。 セッションから拾うならまだわかるのですが。 セッションに情報をセットするタイミング、ゲットするタイミングを見直してみては?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問