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

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

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

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Q&A

解決済

2回答

7717閲覧

strutsでJavaファイルからJavaScriptに変数を渡したい

dialbird

総合スコア379

JavaScript

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

1グッド

0クリップ

投稿2016/09/26 01:44

編集2016/09/26 01:48

おはようございます

Strutsの1.3、Javaの1.6、という環境で、とある案件をやっているのですが、DBからJavaで取ってきた値をJSPファイル内でJavaScriptに手渡したいのです。
最初beanから直接書いた方がいいのではと思ったのですが、セキュリティ的によくないらしいので、このような方法を考えてみました。

まず

<script type="text/javascript" src="/data.do" />

などとして、このアクションにアクセスし、下に記載したDataAction.java内でDBにアクセスし、その結果を返すというものなのですが、そもそもこの方法で下のようなものをやろうとすると

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { response.setContentType("text/javascript"); response.getWriter().write("var hoge = 'hoge';"); return null; } catch (Exception e) { e.printStackTrace(); throw e; } }

このページを開いてもこのスクリプトの部分だけ404エラーになってしまいます。

しかし、このアクションに対して直にURLでアクセスすると、

<html> <head> <style type="text/css">/* This is not a zero-length file! */</style> <style type="text/css">/* This is not a zero-length file! */</style> </head> <body> <pre style="word-wrap: break-word; white-space: pre-wrap;">var hoge = 'hoge';</pre> </body> </html>

というページはとりあえず帰ってきているのです。

どなたかここが間違っている、もしくはこの方がいいよという意見がございましたら是非ともお願いいたします。

ikuwow👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

html

1src="/data.do"

と、「直にURLでアクセスする」パスが異なっているので404(File Not Found)が出るのではないでしょうか。
コンテキストパスを含めるか、あまり推奨できませんが相対パスで指定すれば良いでしょう。

投稿2016/09/26 03:09

A-pZ

総合スコア12011

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

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

dialbird

2016/09/26 05:22

A-pzさん ご返答ありがとうございます。 おっしゃる通りコンテキストパスから指定したらいけました! ありがとうございます!
guest

0

javaの値をhidden項目に設定してjavascriptで使用してはどうでしょうか

html

1<html:hidden id="hoge" property="hoge" />

javascript

1var hoge = document.getElementById('hoge').value; 2

投稿2016/09/26 02:23

pinpikokun

総合スコア376

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

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

dialbird

2016/09/26 05:24

pinpikokunさん ご返答ありがとうございます。 このような方法もあるのですね。最終的には上の方法で一発で解決したので、上を採用しましたが、この方法も調べたところよく使うみたいなので覚えておこうと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問