- PR -

JSPが読み込んだHTMLに動的な変数を反映させたい

投稿者投稿内容
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-05-06 19:15
引用:

Rastyさんの書き込み (2004-05-06 15:57) より:
>>ukさん
@includeを使ってみたところ<%=name%>がそのままで出力されてしまったため、


以下のようなJSPと、
コード:
<%@ page contentType="text/html; charset=shift_jis" %>
<% String test = "this is test"; %>
<%@ include file="include.html" %>



以下のようなHTMLの組み合わせで意図どおりに出力されるのですが、
コード:
<html>
<header>
<title>test</title>
</header>
<body>
test=<%=test%>
</body>
</html>



どこか勘違いしていますか?
bubunya
大ベテラン
会議室デビュー日: 2003/01/16
投稿数: 124
投稿日時: 2004-05-06 20:02
それはコンパイル時に値が確定しているからですね。
動的に変えるのは無理だと思います。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-05-06 20:14
引用:

bubunyaさんの書き込み (2004-05-06 20:02) より:
それはコンパイル時に値が確定しているからですね。
動的に変えるのは無理だと思います。



コード:
<%@ page contentType="text/html; charset=shift_jis" %>
<% String test = (new java.util.Date()).toString(); %>
<%@ include file="include.html" %>


これでもちゃんと動きますが。
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-05-06 20:33
私は使ったことがありませんが、そういったWebデザイナーとプログラマが共同作業しやすいようにと考えて作られた Tapestry というものがあります。

http://jakarta.apache.org/tapestry/index.html
bubunya
大ベテラン
会議室デビュー日: 2003/01/16
投稿数: 124
投稿日時: 2004-05-06 20:56
引用:

<%@ page contentType="text/html; charset=shift_jis" %>
<% String test = (new java.util.Date()).toString(); %>
<%@ include file="include.html" %>



あぁ、ちょっとボケてたかもしれません。
<%= が変数を参照してれば必ずその変数値を使いますね。
頭の中だけで考えていた時に JSP 式がそのまま文字列として存在するようなイメージになってました
コンパイル時点で
out.print("こんにちは、");
out.print(name);
out.print("さん。");
みたいになってるはずですね。

ボケててすいません...

bubunya
大ベテラン
会議室デビュー日: 2003/01/16
投稿数: 124
投稿日時: 2004-05-06 21:31
補足です。

html の方。
コード:
<html>
<body>

<p>
Hello, Mis.<%= usrname %>!!
</p>
</body>
</html>


jsp の方。↑をincludeしてるだけです。
ここでは URLのパラメータ(name)を利用するようにしてあります。
コード:
<%@ page contentType="text/html; charset=UTF-8" %>
<%  request.setCharacterEncoding("UTF-8"); %>
<%
    String usrname = request.getParameter("name");
%>
<%@ include file="/it01.html" %>


で、コンパイル結果は以下のようになります。
コード:
	String usrname = request.getParameter("name");

      out.write("\r\n\r\n");
      out.write("<html>\r\n<body>\r\n\r\n<p>\r\nHello, Mis.");
      out.print( usrname );
      out.write("!!\r\n</p>\r\n</body>\r\n</html>\r\n");


out.print( usrname ); になってますから、適切な値が設定されていればそれが使われますね。

Rasty さん、混乱させてもうしわけない。もう一度ソースを確認してみてください。
servletからjspへの値の受け渡しがうまく行ってないのかもしれません。

スキルアップ/キャリアアップ(JOB@IT)