2011-12-06 20 views
0

これは可能ですか?私はJavaScriptのオブジェクトにJava Beanのデータを渡すことができるようにしたいが、私は本当にインラインスクリプトタグの束と私のJSPページをぶち壊さないようにしたいと思います。私はjavascriptを外部ファイルに分けておくのが好きですが、インラインjを使わずにこのようなことをどうやって実現しますか?インラインJSを使用せずにJava変数をJavascriptに渡す

<script type="text/javascript"> 
     var variableFromServer = '${someBean.someProperty}'; 
</script> 

答えて

0

あなたは、すべてのデータをJSONファイルを作成し、インラインそれを含めるか、Ajaxを経由JSONを取得することができますどちらか - あなたはデータとマークアップを乱雑にしない方法を。 JSP-JSONテンプレートの例については、http://json-taglib.sourceforge.net/を参照してください。

+0

この方法は最も簡単ではないかもしれないが、きれいなようです。私はすべての回答がうまくいくと思いますが、私が選択したルートなので、この回答を受け入れています。 – ryandlf

0

これは価値があるかどうかわかりませんが、代わりにtype = "hidden"の入力ファイルに希望の値を設定してjsに入れてください。しかし、これはフォームからのGETとPOSTリクエストでこのパラメータも渡します。

0

過去に私が使用したオプションの1つは、*.jsファイルでJSPインタープリタを実行するようにサーブレットコンテナを設定することです。これを設定する方法は、実行しているサーバーによって異なります。

リクエスト属性にこのようにアクセスするには、リクエストをJavaScriptファイルを取得するリクエストの一部として設定する必要があります(つまり、JavaScriptの前にサーブレットを置く必要があります) ...またはincludeディレクティブを使用して<script src='...'>タグの代わりにスクリプトを呼び出すこともできます)。 JavaScriptファイルの前にカスタムサーブレットを置かなくてもアクセスできるセッション属性。

0

あなたはスニペットで何をしているのですか(「インラインJS」とお考えですか?)、その中にデータを含むJSONのdivを作成して(1つの文字列として公開します)、JS JSPプロセスを介したファイル(または動的JSページ用に別のテンプレートシステムを使用するなど)。

JSPを使用してJSファイルを処理するファンではありません。私はしばしば私の実際のJSを含める前に体の一番下の<script>タグにJSが必要とするすべての情報を含むオブジェクトを作成します。それはまあまあですが、まっすぐです。

0

私は簡単で簡単な方法をやっているので、JavaからJS変数を最小限に設定した単一のスクリプト要素を作成したいと思います。理想的にはオブジェクトに設定された単一のJS変数パススルーする必要があるデータのすべての異なるビットに対して異なるプロパティを使用します。あなたのJavaコードは基本的に、JS内のオブジェクトリテラルとして解釈されるJSONを出力します。その直後に外部スクリプトが含まれています。後でそれらが含まれるため、すでに作成された変数を使用できます。

上記を頭の中または身体の最後に置くことができます。 (あるいは途中で、それは本当に意味がありません。)

<html> 
<head> 
</head> 
<body> 

<!-- actual HTML markup here --> 

<script> 
    var variableFromServer = '${someBean.someProperty}', 
     objectFromServer = /* jsp to spit out JSON here as appropriate */ ; 
</script> 
<!-- external files included after the above will be able to access 
    those variables --> 
<script src="external1.js" type="text/javascript"></script> 
<script src="external2.js" type="text/javascript"></script> 
<script src="etc.js" type="text/javascript"></script> 
</body> 
</html> 

は、あなたは確かに「インラインスクリプトタグの束を」必要としない - それはすべて入れても意味がない場合でも、 1つのオブジェクト内の値は、少なくとも1つのスクリプト要素内のすべての変数を作成し、その後、他のすべてのJSを外部ファイルに入れることができます。

(必要に応じて名前空間を追加します。)

関連する問題