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

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

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

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

Java

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

JavaScript

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

3回答

4936閲覧

ServletからJSPへデータを渡したい

chonbo2525

総合スコア233

JSP

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

Java

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

JavaScript

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

1クリップ

投稿2016/05/29 23:59

編集2016/05/30 01:23

お世話になっております。
現在SerlvetとJSPを使用し、Web開発をしています。

自身で定義したデータクラスをJSPへrequest.setAttributeで渡しています。
その値をJavaScriptで受け取り処理を行おうとしています。
以下コードです。

java

1Article article = ofy().load().type(Article.class).id(id).now(); 2req.setAttribute("article", article); 3RequestDispatcher rd = getServletContext().getRequestDispatcher("/article.jsp"); 4rd.forward(req, resp);

html

1<%@ page import="com.example.entity.Article" %>

Javascript

1var article = <%= (Article)request.getAttribute("article") %>

JavaScriptの箇所でUncaught SyntaxError: Unexpected token ILLEGALとのエラーが発生してしまい、データを受け取れない状況です。
StringのデータはgetAttributeで取得できました。

javascript

1<% 2Article article = (Article) request.getAttribute("article"); 3String title = article.getTitle(); 4%> 5console.log(<%= title %>); 6var article = <%= article %>;

とした場合はtitleの値は取得できています。
ですが、articleに取得しようとすると上記と同じエラーが発生してしまいます。

ソースを確認したところ

JavaScript

1var article = com.example.entity.Article@89d82b;

となっていたので値自体は届いていると思うのですが、、、、
このエラーに心あたりのある方はいらっしゃいませんでしょうか?

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

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

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

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

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

guest

回答3

0

ベストアンサー

Javaのオブジェクト(article)を直接Javascriptの変数へ代入するのができないからではないでしょうか?
もし同様のことをしたい場合、以下のようにJSONにarticleのメンバをセットすることで代替できそうです。

JSP

1 2<% 3Article article = (Article) request.getAttribute("article"); 4%> 5 6var article = { 7 title: "<%= article.title>", 8 hoge: "<%= article.hoge>", // 必要なメンバを同様に列挙 9101112}; 13

動作はさせていないので文法的なエラーがあるかもしれませんが、考え方として参考まで。

投稿2016/05/30 01:31

takyafumin

総合スコア2335

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

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

0

JavaScriptの部分にてvar article = <%= article %>した結果、JavaのArticleオブジェクトの結果が出力された結果、それはJavaScriptで解決できる内容ではないようです。

var artilceで取得したい内容は、articleのオブジェクトから何かを指定して取り出した文字列ではないでしょうか?
例えばtitleというフィールドがある場合は、<%= article.getTitle(); %>など。

投稿2016/05/30 01:22

編集2016/05/30 01:33
A-pZ

総合スコア12011

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

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

chonbo2525

2016/05/30 01:24

コメントありがとうございます。 誤字でした。訂正いたしました。
guest

0

そのjavascriptのエラーは文法間違いの時に起きやすいですよ。
ソースを表示させて、そのjavascriptの部分を確認してみてください。

var article行のセミコロンがないところが気になります。

投稿2016/05/30 00:24

koufukurairai

総合スコア64

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

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

chonbo2525

2016/05/30 00:30

早速のコメントありがとうございます。 情報を追加いたしました。 セミコロンをつけた場合のソースの状態を追加致しました。
koufukurairai

2016/05/30 00:42

ダブルクオーテーション(もしくはシングルクオーテーション)で囲われてないのも気になります。
chonbo2525

2016/05/30 01:33

ありがとうございます。 ダブルorシングルクォーテーションで囲むと文字列になるようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問