今だけ人気マンガ100円レンタル特集♪

登録ボタンを押したあと、登録確認アラートが表示されるのですが、
同じ(登録ボタン押下の)タイミングでJavascriptで処理を実行し、
その値をjavaへ渡したいと思っています。

具体的には、
var aaa = new Date();
<% aBean.setA(%>'aaa'<%); %>

Javascriptで取得した「aaa」をJavaの引数として渡す方法を教えて頂けませんでしょうか?
よろしくお願いします。

質問者からの補足コメント

  • ご回答ありがとうございます。
    「inputtype="hidden"」を使って渡すことはできないでしょうか?

      補足日時:2015/09/05 07:48

このQ&Aに関連する最新のQ&A

A 回答 (3件)

JSP の中に埋め込んだ JavaScript は、ブラウザ側にて実行されるので値を渡せません。



どうしてもやりないのならば
1. 引き渡す専用の JSP を用意する。
2. その JSP 専用の URL を用意する。
3. JavaScript から非同期送信(AJAX)にて、URL に aaa の値を送る。
4. 引き渡す専用の JSP が HTTP 要求を解析し、aaa の値を得る。
5. 目的の JSP にて値を読めるように、セッション等の手段で保存する。
    • good
    • 0
この回答へのお礼

ありがとうございました!
確認アラートが表示されるタイミングでjavascriptから
hidden項目に値を設定する方法で、何とか解決できました!

お礼日時:2015/09/05 23:26

> 「inputtype="hidden"」を使って渡すことはできないでしょうか?



これは、質問文に書いたことが無理だと分かった上で、全く別の質問として聞いているのでしょうか?
    • good
    • 1
この回答へのお礼

ありがとうございました!
確認アラートが表示されるタイミングでjavascriptから
hidden項目に値を設定する方法で、何とか解決できました!

お礼日時:2015/09/05 23:26

JavaScriptが実行されるまえに、JSPの実行は終わってますよ。

時間をさかのぼることは出来ません。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJavaScriptの変数をjavaのメソッドの引数に渡す

JavaScriptの変数をjavaのメソッドの引数に渡すことはできますか?


<%@ page contentType="text/html; charset=Windows-31J" %>
<%!
String chek(String a){
String st = a;
return st;
}
%>
function chek(){
var a1 = "abcd";
var a2= "<%=this.chek(%>ai<%=)%>";
alert(a2);
}

Aベストアンサー

こんばんは。

質問の答えですが、dragon_cyberさんが考えているようなことは、できません。
アプレットを使えばできた気がしますが、おそらく、dragon_cyberさんが望んでいる回答ではないでしょう。

JSPとは何をするプログラムでしょうか?
HTMLを出力するプログラムです。
JavaScriptは何をするプログラムでしょうか?
HTML上で動くスクリプトプログラムです。

JSPを使用する場合、JavaScriptはJSPによって出力されます。

dragon_cyberさんの前回の質問を拝見しましたが、

<%
for(i=0;i<5i++){
%>
if(<%! s[i] %> == document.form1.desc.value){
alert("Bです");
}
<%
}
%>

という、JSPを実行すると、どのようにHTMLが出力されるか確認してください。
if文が5つあるJavaScriptが出力されいるはずです。

JSPが何をするのか、JavaScriptが何をするのか、頭の中を整理してください。

こんばんは。

質問の答えですが、dragon_cyberさんが考えているようなことは、できません。
アプレットを使えばできた気がしますが、おそらく、dragon_cyberさんが望んでいる回答ではないでしょう。

JSPとは何をするプログラムでしょうか?
HTMLを出力するプログラムです。
JavaScriptは何をするプログラムでしょうか?
HTML上で動くスクリプトプログラムです。

JSPを使用する場合、JavaScriptはJSPによって出力されます。

dragon_cyberさんの前回の質問を拝見しましたが、

<%
for(i=0;i<5i++...続きを読む

Qjavascriptからjavaを呼び出したい

javascriptの勉強中です。
javascriptでajaxを用いてjavaのメソッドにアクセスし、結果をjavascriptに返す、という実装をしたいのですが上手く行きません。

流れとしては以下のようなものを想定しています。

js
/project/WebContent/js/testJS.js(画面の値を引数としてtestJavaクラスのtestMethodメソッドを呼び出す)

java
/project/src/java/jp/co/application/util/testJava.java(受け取った引数の値をtestDAOクラスのtestDAOMethodメソッドに渡す)

java
/project/src/java/jp/co/application/dao/testDAO.java(受け取った値を用いてDBにアクセスし、結果をjsに返す)

まず技術的に、同じプロジェクト内のjavaメソッドをjs上で呼び出し、結果を受け取るということは可能なのでしょうか。
ご教示お願いします。

Aベストアンサー

#3 です。

> 「javaを使わない」という条件だと、XMLのリクエストのみで実現は可能でしょうか。
DB上にあるデータを全てXML化して置いておけば出来なくはありません。
ただ、その場合は静的データ(XML)で管理することになるので、DBを使用する意味がなくなると思うのですが…。

DBを利用するならサーバサイドスクリプトの存在は必須です。

1. DBの内容をサーバ意サイドスクリプトで出力
2. 出力データを JavaScript で受け取り、カレンダーに描画する

このような処理が必要になります。
出力データのフォーマットは JSON, XML 何でも良いですが、JavaScript で認識しやすいデータが望ましいですね。
DBデータがあらかじめキャッシュして置ける内容なら初めからJavaScriptに全データをObjectとして渡しておくのが理想だと思います。
月が変化する毎にリクエストを発行する必要がなくなりますので、コードを単純化できます。
その場合は、カレンダーを出力するHTMLをサーバサイドスクリプトで書いて、JSONを出力しておくのが楽な実装ですね。

# Re: mifu223さん

#3 です。

> 「javaを使わない」という条件だと、XMLのリクエストのみで実現は可能でしょうか。
DB上にあるデータを全てXML化して置いておけば出来なくはありません。
ただ、その場合は静的データ(XML)で管理することになるので、DBを使用する意味がなくなると思うのですが…。

DBを利用するならサーバサイドスクリプトの存在は必須です。

1. DBの内容をサーバ意サイドスクリプトで出力
2. 出力データを JavaScript で受け取り、カレンダーに描画する

このような処理が必要になります。
出力データのフォーマッ...続きを読む

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

Qjavascriptでセッションを取得

javaのsession.setAttribute()でセットした値をjavascriptで取得することは可能なのでしょうか?
可能であれば、手法を教えていただければと思います。
よろしくお願いします。

Aベストアンサー

セッションIDの保存はcookieかURLに連結する方法しか有りませんから、
JavaScriptでdocument.cookieや<a href="">を解析するなどしてセッションIDを取得することは可能だと思います。

セッションIDとセッションの値・内容との関連づけはサーバーで行われていますから、
その値を取得するにはAjaxなどで読み込むとかしないと無理だと思います。

QjavaScriptの変数をJavaの変数に代入する。

jspで作ったプログラムがあるこのような場合変数を共有する方法はありますでしょうか?
以下の場合iの(JavaScript)値をjavaの変数iに代入したい場合どうすればいいでしょうか?

<%! String s[] ={A,B,C,D,E} %>
function chek(){
for(i = 0;i< 5 ;i++){
<%! int i =%> = i;//←この部分です
//document.form1.desc.valueにはBの値が入っている
if(<%! s[i] %> == document.form1.desc.value){
alert("Bです");
}
}

Aベストアンサー

for文をJSPで記せばよいかと思います。
<%
for(i=0;i<5i++){
%>
if(<%! s[i] %> == document.form1.desc.value){
alert("Bです");
}
<%
}
%>

QJavaScriptからJAVAクラスを呼び出す

JavaScriptからJavaクラスのメソッドやコンストラクタを呼び出す事ってできるのでしょうか?

今、行おうとしているのが、テキストにて入力した後に日付編集(4200812 → H20. 8. 12に変換)処理を行うというものです。
初期表示時は、Javaクラスで変換して表示させるので、大丈夫なのですが、どうしても入力したタイミングで変換させるには、JavaScriptを使用しなければなりません。
そこで、JavaScriptに元号情報やJavaで記述した制御などを記載すればできると思いますが、面倒臭いので、JavaScriptからJavaクラスのメソッドが実行できればなと思います。

そのような事はできるのでしょうか??

JDKは1.6です。

Aベストアンサー

まず、以下のことは理解しているでしょうか?
 Java:サーバ側の処理
 JavaScript:クライアント側の処理(ブラウザで処理される)

画面の読み込みが終わった段階で、すでにサーバ側の処理は終了しています。
画面操作からサーバ処理を起動するには、
何らかのサーバへ何らかのリクエストをしないとだめかなと。

例えば、テキストボックスのonchangeのタイミングで日付データを送信すれば、
その日付データをサーバ側で処理できますね。
方法としては、同じ画面をリロードさせるようにしたりとか、Ajaxを使ったりするとか。
(送信タイミングとしては、あまりよくないような気もしますが)

でも変換するだけだったら、JavaScriptでやってしまってもいいかもしれませんね。
こちらの方が面倒ではないような気がします。

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

QJava-jspの画面入力値保持について

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

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

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


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

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

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

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

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

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

Qservletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、各情報をsetする。
HttpServletRequestにsetAttributeでFileInfomation情報を付加し、
disp.jspへforwardする。

※以下の方法を考えています。
request.setAttribute("fileinfo1", fileinfo[0]);
request.setAttribute("fileinfo2", fileinfo[1]);
request.setAttribute("fileinfo3", fileinfo[2]);
・・・
(配列でsetAttributeできるのかわからなかったので、
 とにかくファイルの数分setAttributeしてみました)

getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res)

わからないこと:
disp.jspでどのようにFileInfomationの情報を取得し、
内容を参照できるのかがよくわからないのです。
jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、
返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね?

突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。
オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、
それもご教授いただけますでしょうか。
よろしくお願いいたします。jsp難しいです・・・。

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、...続きを読む

Aベストアンサー

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む


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

人気Q&Aランキング