• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JSTLを利用してJavascriptの結果を表示したい)

JSTLを利用してJavascriptの結果を表示する方法

kscKaneの回答

  • ベストアンサー
  • kscKane
  • ベストアンサー率62% (18/29)
回答No.1

JSP上のJSTL(というかタグライブラリ)による処理は、実際にはJavaプログラムに変換され、サーバー側で実行された後、ただのHTMLとしてブラウザに返されます。 一方、JavaScriptはブラウザで動作する言語です。 従って、ブラウザ上で動いたJavaScriptの結果は、(サーバーに送信するという動作無しでは)サーバー上で動くJSTLの条件としては使えないことになります。 JSPとしての処理は全てサーバーで行われ、その結果Javaっぽい記述のないHTMLがブラウザに返されると思っていれば間違い有りません。

pistachi-o
質問者

お礼

回答遅くなって申し訳ありません。 助かりました。ありがとうございました。

関連するQ&A

  • JAVASCRIPTでの画面を再表示させない方法

    JAVASCRIPT初心者です。よろしくお願いします。 ちょっと特殊なのですが、JSPで <a href=\"javascript:nextPattern()\"> のような形で<A>タグで遷移を行うように指定しています。 JAVASCRIPTではフラグに応じて処理を分けたいと思っています。 function nextPattern() {  if (flg == 1) { ☆☆処理1☆☆  } else { ☆☆処理2☆☆  } } そこで、このflgが1であるときに、画面遷移を行わないようなメソッドにしたいのです。 画面の再表示がされず、処理が自画面に戻ってくるだけ。っというようなことをしたいのですが、思いつくことを(return false;やbreak;など・・・)してみたところ うまくいきません。 どうしても<A>タグの内容を変えたくないので、ややこしくなっているとは思うのですが、何とかお知恵をお貸しください。 よろしくお願い致します。

  • javascript・JSP関連

    理解できないことがあったので質問させていただきます。 javascriptで定義した変数をJSPに返すことはできますか? 例えば、 JSPで <select name="" id="aaa" onchange="bbb();"> javascriptで function bbb(){ var ccc = document.getElementById('aaa'); ddd = ccc.options[ccc.selectedIndex].value; //選択された項目の値を取得する } dddの変数をJSTL(標準タグライブラリ)の <c:set var="eee" value="ココに返す"> みたいなことは、できませんでしょうか? かなり簡潔に書いてしまいましたが、 ご理解して頂いた方は解答・返答の程、よろしくお願いします。

  • JSTLで、x:out でXpathを指定してのxmlの要素表示ができません。

    度々の質問で申し訳ございませんが、どなたか分かる方がいらっしゃいましたら教えて下さい。 ※前に投入していた質問は削除させて頂きました。  質問を回答途中であった方にはお詫び申し上げます。大変申し訳ございません。 本題ですが、JSTLのx:out でXpathを指定してのxmlの要素表示ができません。 使用しているソースは下記の通りです。 ---- <%@ page language="java" contentType="text/html;charset=Windows-31J"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%> <html><body> <c:set var="greeting"> <?xml version="1.0"?> <greeting>hello, world</greeting> </c:set> <x:parse var="xml" doc="${greeting}" /> <x:out select="$xml/greeting" /> </body></html> ---- この画面を表示させようとすると、下記のエラーが出てしまいます。 ---- org.apache.jasper.JasperException: Exception in JSP: /jsp/html/xmltest_003.jsp:14 11: <greeting>hello, world</greeting> 12: </c:set> 13: <x:parse var="xml" doc="${greeting}" /> 14: <x:out select="$xml/greeting" /> 15: 16: </body></html> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 原因 javax.servlet.ServletException: org/apache/xpath/XPathException ---- XPathExceptionと出ているので、xpathの指定がおかしいのだと思うのですが、 <x:out select="${xml/greeting}" /> <x:out select="${xml/greeting/text()}" /> <x:out select="$xml/greeting/text()" /> <x:out select="${xml}/greeting" /> <x:out select="${xml}/greeting/text()" /> とやってみてもエラーが表示されます。 ---- c:outは下記で出力できますので、taglibは正常に動いていると思われます。 <%@ page language="java" contentType="text/html;charset=Windows-31J"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html><body> <c:set var="data" value="てすと!!" /> <c:out value="${data}" /> ${data} </body></html> ---- web.xmlの冒頭は、 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> に変更しました。 ---- web.xmlには<web-app>タグ内の最後に下記の記述を追加しました(抜粋)。 <taglib> <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jsp/jstl/xml</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </web-app> ---- WinXP/Eclipse3.3/Tomcat5.5/GEF3.3/struts-1.3.8/JDK1.5/JSTL1.1.2で動かしています。 ---- どなたかこのエラーについての解決の糸口などがここら辺りでは? とお分かりになる方がいらっしゃいましたら、ご教授頂ければ幸いです。 初歩的な質問で大変恐縮ですが、宜しくお願い致します。

    • ベストアンサー
    • Java
  • 現在のhtmlにjavascriptを記述する際の書き方を教えてくださ

    現在のhtmlにjavascriptを記述する際の書き方を教えてください。 今までは以下のように記述していました。 このように<script>タグで囲む方法は古いらしいのですが・・・ <script type="text/javascript"> <!-- function test{   alert(1); } //--> </script>

    • ベストアンサー
    • HTML
  • javascript

    javascript全くの初心者です。 CLASSに与えた値を条件によって変更することは出来ますか、色々やってみましたが出来ません。以下の例では男を女に変えたいのですが、ご面倒お掛けしますが宜しくお願い致します。 <html> <head> <title>sample</title> <div class = "test">男</div> </head> <script type="text/javascript"> function delAttr() {  test= "女"; } </script> <body> <script type="text/javascript"> if test = "女" delAttr(); </script> </body> </html>

  • JSPのカスタムタグについて

    現在JSPのタグファイルを解読しているのですが、以下の分が理解できず、困っています。 <c:choose> <c:when test="${!empty param['cnt'] and !empty param['page']}"> ・・・ Coreタグの使い方はわかるのですが、"${!empty param['cnt'] and !empty param['page']}"の一行の意味がわかりません。 特に、cntとpageという変数がいきなり出てきたので、どのようなものなのかがわからない所です。 ぜひ御教授よろしくおねがいします。

  • JavaScript→HTMLへ値渡しする方法

    お世話になります。 JSPファイル内のJavaScriptで調べた値を、 同じJSPファイル内のHTMLへ値を渡して、 その値をHTML内のIF文で判断して、 HTMLの表示画面内容を、 大まかには、以下のサンプルソースのような流れで 変更したいです。 <script language="JavaScript" type="text/javascript"> <!-- function getInfoAgentUser(){ var agent_user = navigator.userAgent.toLowerCase(); var WinOs = agent_user.indexOf("win") != -1; // 文字列に、"win"が含まれているケース var Msie = agent_user.indexOf("msie") != -1; // 文字列に、"msie"が含まれているケース var errFlg = ""; if(WinOs){ if(Msie){ errFlg = "0"; }else{ errFlg = "1"; } }else{ errFlg = "2"; } } //--> </script> </head> <body onLoad="getInfoAgentUser()"> <c:if test="${errFlg == 1}"> <h1>ブラウザエラー</h1> <div class="main"> <p><c:out value="Internet Explorerを利用してください" /></p> </div> </c:if> <c:if test="${errFlg == 2}"> <h1>OSエラー</h1> <div class="main"> <p><c:out value="Windows XP以上を利用してください" /></p> </div> </c:if> 上記のサンプルソース内の、 JavaScript内のIF文で判断した「errFlg」変数の値を、 <body ~以下で、 <c:if test="${errFlg == 1}"> みたいに判断し分岐して、 HTMLの表示画面内容を 変更したいです。 どのようにすれば、上記の「errFlg」変数の値を JavaScript→HTMLへ値渡し出来るのでしょうか? 以上になります。 ご存じの方がいらっしゃいましたら教えてください。 宜しくお願いします。

  • JSP内で外部jsファイルを指定する

    昨日から散々悩んでいます。 tomcatのJSPから外部jsファイルが読み込めません。 最初htmlのみでテストしたのですが そのときは何の問題も無く動きました。 URLの指定の仕方かなと思いましたが、 cssのほうは同じ指定の仕方で効いています。 <!---------- JSP内容 ------------------------> <!-- [テスト]ボタン押下でscript実行 --> <html> <head> <title>テスト</title> <script Language='JavaScript'    type='text/javascript' charset="shift_jis" src='/Test/script/Script.js'> </script> <script language='JavaScript' type='text/javascript'> <!-- function test(){ jstest(); } function test1(){ alert("test1:OK"); } // --> </script> <link rel="stylesheet" href="/Test/css/Style_ver1.css" type="text/css"> </head> <body> <form> <input type='button' class="button" value='テスト' onclick="test()"> </form> </body> </html> <!---------- 外部js内容------------------------> function jstest(){ alert("jstest:OK"); } <!---------------------------------------------> onclick="test1()"にすると動きます。 以前に作られた別アプリケーションのJ2EEのソースを見ると、 src=<c:url とcoreタグが使用されています。 coreタグの使用なしにURLを書くことはできないのでしょうか? すいませんが、どなたか教えてください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • javascriptのconfirmについて

    javascriptのconfirmが実行されると確認ダイアログボックスが表示されるはずですが、 何故か何も表示されず、必ずfalseを通ります。 かなり初心者的ミスを侵している気がしますが、調べても分からなかったので、 どなたかご教授頂ければ幸いです。記述したソースは以下になります。 headタグ内 <script type="text/javascript"> <!-- function confirm(s){ if(window.confirm('実行します')){ location.href = "/?flg="+s; } return false; } // --> </script> ■bodyタグ内 <a href="javascript:confirm('1');return false;">テスト</a>

  • PHPの処理結果をjavascriptで利用する方法

    既に似たような質問も出ていそうで恐縮ですが(一通り目を通したですが、目的とするものは見つけられませんでした)、 PHPとjavascriptのやりとりについて教えていただければ幸いです。 データをフォームなどから受け取る→サーバー側(php)で処理→ 処理した結果の変数をjavascript用の変数として扱うといったこと がしたいのですが、うまくできません。 実際には以下のような形で書いて失敗してしまいました。。。 /*xxx.php*/ <html> <head> <?php $result = $_POST["sentence"]; ?> <script language="javascript"> result = "<?=$result?>"; </script> <script src="xxx.js" type="text/javascript"language="javascript"></script> </head> <body> <form id="sample"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> </body> </html> /*xxx.js*/ /*xxx.js*/ window.onload = function(){ document.getElementById("sample").onsubmit = function() { var req = createHttpRequest(); req.onreadystatechange = function(){ if(req.readyState==4 && req.status == 200){ alert(result); //PHPの結果を待った後を想定した何らかの処理      //ここでresultを使いたいが、サーバー側への送信前      //の値が入っているだけでonsubmitが反映されていない。 } } req.open("POST","./xxx.php",false); //<-formでくくられた<input type="text">等の部分は反映されない。 req.send(""); } } function createHttpRequest(){ if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window.ActiveObject){ try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { return null; } } } } 私なりに調べたところ 1.PHPとjavascriptは別の所で動作しているので受け渡しは基本不可能 2.PHP側で動的に書き出すことで見せかけることはできる。 var test = <?=$test?>等 3.XmlHttpRequestでphpの処理を結果を待って、変数を利用しようと思ったが、 <form id="form"> <input type="text" name="sentence"> <input type="submit" value="送信"> </form> といった場合に$_POST["sentence"]に値を入れる方法が不明。 また、 multipart/form-dataによる送信など方法が複雑。 responseTextには<html>から</html>まで格納されてしまった。 処理項目ごとに表示用に別にPHPファイル作成だと困る。 4.<form action = "xxx.php" onsubmit=関数名>とすると、 onsubmitで指定した関数が先に呼び出されてから、 xxx.phpの実行が行われるので、サーバー処理を待たずに javascript側が実行されてしまう。 といったことだけは分かりました。 しかし、どのように変更すればうまくいく(もしくは見せかける) ようになるのかがさっぱり分からなかったため、 質問させていただきました。 よろしくお願い致します。

    • ベストアンサー
    • PHP