JSPのフォームの値を別のJSPからセットする

このQ&Aのポイント
  • JSPのフォームの値を別のJSPからセットする方法について説明します。
  • main.jspにbody.jspをInsertする構成で、ページが読み込まれた時にbody.jspのテキストエリアに値を入れる処理を行いたいです。
  • JavaScriptのonloadを使用して、指定したテキストエリアに値をセットする処理を実装することが可能です。
回答を見る
  • ベストアンサー

JSPのフォームの値を別のJSPからセットする

こんばんは。 main.jsp に body.jsp をInsertする構成です。 ページが読み込まれた時に 【body.jsp】のテキストエリアに値を入れる処理を行いたいです。 【main.jsp】内の<body>タグで JavaScriptのonloadを使用していますが、 このような処理は可能でしょうか? 以下は処理を抜粋したものです。 ***** main.jsp ***** <body onload="scriptMethod(textProperty)"> ***** body.jsp ***** <html:text name="textName" property="textProperty"> ***** JavaScript ***** function scriptMethod(text){   document.getElementById(text).value="1234"; } 不明な点がありましたら、補足いたします。

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

結論から言うと、可能だと思います。 main.jspにbody.jspをInsertしているようなので、 body の onloadイベントは、1つのHTMLで完結しているのではないでしょうか。 と言う事は、この処理自体には、JSPはあまり関係ない気もします。 Javascriptだけの処理なのじゃないですか。 次の部分ですが、 <html:text name="textName" property="textProperty"> これは、 htmlの入力フィールド<input type="text">を 出力するタグですね。 タグの name 属性を"textName"指定。 対応するBeansのpropertyを"textProperty"としているようです。 <input type="text" name="textName" value="textPropertyの内容"> のようなHTMLが出力される事が期待出来るのではないでしょうか。 しかし、 > ***** JavaScript ***** > function scriptMethod(text){ >   document.getElementById(text).value="1234"; > } javascript部分で、指定している idは、textPropertyのようですが、HTML内ではこれは見つからないのではないかな? html:textに固定のidを設定するには、 <html:text id="textProperty" name="textName" property="textProperty" /> こんな感じじゃないかな。 これで、 <input type="text" id="textProperty" name="textName" value="textPropertyの内容"> のようなHTML出力が期待できるようになるので、 javascript経由で値の変更が出来ると思います。

baruse
質問者

お礼

回答ありがとうございます。 >html:textに固定のidを設定するには、 ><html:text id="textProperty" name="textName" property="textProperty" /> 上記の通り、タグにidを指定したところ 期待通りの結果が得られました。

関連するQ&A

  • JSP & JavaScriptに関して

    Strutsのフレームワークを用いて開発を行っています。 JSPに以下のことを記述して、<bean:write・・・と記述してある部分に変更がかかった場合(JavaScriptでdocument.getElementById("××").innerText=値 として、値を埋め込みます)も、元の値に戻したいと思っています。 .jspファイルに記載↓ <body onload="getOldData(document)"> <input type=hidden name="old_××" value ="" > <bean:write name="○○" property="××" /> <html:hidden name="○○" property="××" /> <input type="reset" value="クリア" onclick="getReset(document);"> .jsファイルに記載↓ //画面を開いた時の値をold_××にセットしておく function getOldData(doc) {  doc.getElementById("old_××").value =  doc.getElementById("id_××").innerText; } //変更がかかったinnerTextを画面表示時に戻す function getReset(doc) {  doc.getElementById("id_××").innerText = doc.getElementById("old_××").value; } このように設定すると、"クリア"ボタンを1回押す分には、画面表示時の状態に戻すことができるのですが、2回目を押すと、doc.getElementById("old_××").valueの値がとってこれなくなります。なぜ1回目は思った処理が行われて2回目以降は"old_××"の値がとってこれなくなるのかわかりません。 大変困っています。分かる方がいらっしゃいましたら、ご教授ください。 OS:Win XP

    • ベストアンサー
    • Java
  • セレクトメニューに応じたdivタグの内容

    javascriptの質問です。フォーム内のセレクトメニューに応じて表示する配列を選び、複数のdivタグ内に表示したいと思っています。getElementByIdでセレクトメニューにIdをつけて呼び出し、selectedIndexでfunction()をonloadという事ですすめています。 複数のdivタグ内に書き出すのにinnerHTMLを使うんだなというところまでは理解しているつもりですが、上手く動きませんので、どなたかご存知の方にご教授願えればと思います。 <html> <head> <script type="text/javascript"> window.onLoad = function(){ document.getElementById("selected").onChange = function(){ var planTitle = this.selectedIndex; var object = document.getElementById("derection"); var TextData = [[],["text","text"],["text","text"]]; for (var i=0; i<TextData[planTitle].length; i++){ document.write(TextData[i]); } } } </script> </head> <body> <form action=""> <select id="selected"> <option value="title01">title01</option> <option value="title02">title02</option> <option value="title03">title03</option> </select> <div id="direction"></div> <div id="direction"></div> </form> </body> </html>

  • イベントハンドラに処理を追加するには?

    例えばbodyタグのonloadイベントハンドラに JavaScriptを使って処理を追加するにはどうすればよいのでしょうか? 例) ・rei.htm <html>  <script language="JavaScript" type="text/javascript">  function hoge(){   alert("hogeです");  }  function foo(){   alert("fooです");  }  </script>  <body onload="hoge();">  </body>  <script language="JavaScript" type="text/javascript">  document.body.onload += foo();  </script> <html> ※前提条件として、変更可能な箇所はscriptタグ内のみとなります。 「こんなんでいけないかな?」と思って上記のようにやってみたのですがうまくいきませんでした。 (結果はfoo()のみ実行され、hoge()は実行されませんでした。 alertでbody.onloadの中身を確認すると『function anonymous{hoge();}undefined』と表示されるので、なぜfoo()が実行されてhoge()が実行されないのかよくわかりませんが‥) また試しに document.body.onload += foo(); これを以下のように変更してみました。 document.body.onload = foo(); この時は、 ・foo()の実行  ↓ ・javascriptエラー  ↓ ・hoge()の実行 となりました。(これもなぜこうなるのかよくわかりせん) 以上、イベントハンドラに最初から任意に入れられている処理を残しつつ、 さらに処理を加えるにはどうすればよいのかご教示お願いします。

  • 下記コードの実行方法について質問です。

    問題のコードは下記ですが、 bodyタグに onLoad="firstFunc()" と書かずに実行したいのですが、 スマートな方法はないでしょうか? よろしくお願いいたします。 <script type="text/javascript"> function firstFunc(){ var aFunc = document.getElementById('btn'); aFunc.onclick = function(){ alert('りんご'); } } </script> </head> <body onLoad="firstFunc()"> <button id="btn" name="ボタン">getElementByIdでonclickのイベントを追加できる。</button> </body>

  • 送信フォームからjspページに値を飛ばしたい

    jspページでhtml,javaScriptを用いてフォームの入力制限を行い、FMenu.jspという、jspページにフォームの値を送信したいのですが、うまくいきません。どなたか教えてください。 Form.jspファイル(中略) <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>フォーム入力画面</title></head> <body><center> <script type="text/javascript"> <!-- function checkForm(){ var a,b; NCheck(); if(a==true){ WCount(); } ACheck(); if(b==true){ WCount(); document.FM[0].submit(); document.FM[1].submit(); } } (中略) //--></script> <form action="Menu.jsp" method="POST" name="FM"> ID<input type="text" name="ID" size="20" maxlength="4"><br> パスワード<input type="text" name="PASS" size="20" maxlength="4"> <input type="button" value="OK" onClick="return checkForm();"> (中略)

  • 入力された文字列からリンクタグを生成

    お世話になります。 ブラウザから、一行テキストに入力された文字列を使用してリンクタグを生成する挙動を構築していますが、肝心のリンクタグ( aタグ等 )が反映されずに悩んでいます。 普段PHPでプログラミングを行っていますので、一旦PHPで変数に置き換えたり、データベースを介したり様々な方法を試みましたが、中々うまくいかずにいます。 -- 【 JavaSの定義箇所 】 ------------- <script type="text/javascript"> <!-- function textcopy(){ var text1 = document.getElementById("text1").value; document.getElementById("text1").value = ""; text1 = document.getElementById("insert1").innerHTML + text1; document.getElementById("insert1").innerHTML = "<div>" + text1 + "</div>"; var text2 = document.getElementById("text2").value; document.getElementById("text2").value = ""; text2 = document.getElementById("insert2").innerHTML + text2; document.getElementById("insert2").innerHTML = "<div>" + text2 + "</div>"; var text3 = document.getElementById("text3").value; document.getElementById("text3").value = ""; text3 = document.getElementById("insert3").innerHTML + text3; document.getElementById("insert3").innerHTML = "<div>" + text3 + "</div>"; var text4 = document.getElementById("text4").value; document.getElementById("text4").value = ""; text4 = document.getElementById("insert4").innerHTML + text4; document.getElementById("insert4").innerHTML = "<div>" + text4 + "</div>"; var text5 = document.getElementById("text5").value; document.getElementById("text5").value = ""; text5 = document.getElementById("insert5").innerHTML + text5; document.getElementById("insert5").innerHTML = "<div>" + text5 + "</div>"; } //--> </script> -- 【 form部品の箇所 】 -------------- <form> <input type="text" id="text1" value="<a href='"> <input type="text" id="text2"> <input type="text" id="text3" value="'>"> <input type="text" id="text4"> <input type="text" id="text5" value="</a>"> <br /> <div id="insert1" style="display: inline-block;"></div> <div id="insert2" style="display: inline-block;"></div> <div id="insert3" style="display: inline-block;"></div> <div id="insert4" style="display: inline-block;"></div> <div id="insert5" style="display: inline-block;"></div> <button type="button" onclick="textcopy()">submitする</button> </form> ------------------------------- 例えば、 【 <a href='http://www.hoge.com'>テスト</a> 】の様に返したいのに、 【 http://www.hoge.com'>テスト 】と返ります。 HTMLタグは特殊文字に変換してみましたが、結果は同じでした。 因みにこの挙動がうまくいったら、type属性はhiddenにして隠し要素にするつもりでした。 恐らくこの様な面倒くさい構文より簡単な書き方があるかと思いますが、 今までJavaScript自体殆どタッチしていませんでしたので、調べながら 自分で構築してみました。 ご教示の程、どうぞよろしくお願い申し上げます。

  • javascriptの変数値をjspへ渡す方法?

    下記の方法で、テキスト項目から、javascriptで値を取得できました。 この値を、jspの変数Stringへ格納するには、 どうすればよいでしょうか? <%= "<script type=\"text/javascript\" charset=\"UTF-8\">" %> <%= "target = document.getElementById(\"outaddress1\");" %> <%= "target.innerText = document.forms.zip_form.address1.value;" %> <%= "target = document.getElementById(\"outaddress2\");" %> <%= "target.innerText = document.forms.zip_form.address2.value;" %> <%= "target = document.getElementById(\"outaddress3\");" %> <%= "target.innerText = document.forms.zip_form.address3.value;" %> <%= "</script>" %>

  • Safari3にて、新しく開いたウィンドウの入力フォームにフォーカスが合いません

    はじめまして。 javascriptでフォームにフォーカスを当てる処理として、下記のfocusTextファンクションをonloadで呼び出しています。 function focusText(){ document.getElementById("toFocus").focus(); } しかし、Safari3.2.2の場合、対象のHTMLを target="_blank" にて開いた場合にフォーカスが合ってくれません。 window.opener.blur(); を挟んでもうまく行きませんでした。 Safari4や、Interner Explorer、Google Chrome、Firefox等ではうまく行っています。 OSはWindows Vistaです。 解決策をおわかりの方、ご教授いただければ幸いです。 サンプルのソースを下記に記述します。 宜しくお願い致します。 == base.html == <html> <head></head> <body> <a href="new.html" target="_self">自身のウィンドウ</a><br> <a href="new.html" target="_blank">新しいウィンドウ</a> </body> </html> == new.html == <html> <head> <script type="text/javascript"> function focusText(){ document.getElementById("toFocus").focus(); } </script> </head> <body onload="focusText();"> <form> <input type="text" id="toFocus"> </form> </body> </html>

  • ウィンドウサイズの変更を滑らかに取得したい

    <html> <head> <script type="text/javascript"> function test(){ width = document.body.clientWidth; height = document.body.clientHeight; document.getElementById("haba").value=width; document.getElementById("takasa").value=height; } </script> </head> <body onload="window.setInterval('test()',1);"> 幅<input size="20" type="text" id="haba"/> 高さ<input size="20" type="text" id="takasa"/> </body> </html> -------------------------------------------------------------- 以上のような、ブラウザのウィンドウサイズを取得する コードを書いたのですが、滑らかに高さと幅が取得出来ずに困ってます。 イメージとしては、ウィンドウサイズをマウスで変更すると 高さと幅の数値がもっと滑らかに細かく変化するように したいのです。 どなたか回答お願いします。

  • BODYタグのonloadについて

    こんにちは。 HTMLのBodyタグにて、onload処理を記述しているのですが、 不思議な現象が起きます。。。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title></title> <script language="JavaScript" type="text/JavaScript"> <!-- // 初期表示 function init() { alert("AAA"); var formObj = document.getElementById("starter"); alert("formObj.action = " + formObj.action); formObj.submit(); } //--> </script> </head> <body onload="init()" tabindex="-1"> Now Loading... <form method="post" name="starter" action="/getIchiran.do" > <% System.out.println("このJSPにきてますか?"); %> </form> </body> </html> 上記のように記述しているのですが、 onloadのinit関数が、呼ばれる場合と呼ばれない場合があります・・・ 呼ばれる場合と、呼ばれない場合でも 「このJSPにきてますか?」のログは表示されているので、このHTML(JSP)は呼ばれている模様です。 どうしてこうのような現象が起きるのかさっぱり分からなくて・・・ 何が悪いのか教えて頂けないでしょうか? 宜しくお願い致します。 IEは6.0、 OSはWindowsXPです。

    • ベストアンサー
    • HTML

専門家に質問してみよう