- - PR -
Linux上でStrutsタグライブラリの属性にスクリプトレットで値を与える方法について。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-09 14:46
―――――――――――――――――――――――――――――――――――
【開発環境】 統合開発環境:Eclipse2.0.2 (WindowsXP) JDK: j2sdk1.4.1_03 フレームワーク: Struts1.1rc1(MVC形式) Webサーバ: Apache1.3.28 サーブレットコンテナ: Tomcat4.0.6 DBサーバ: MiracleLinux2.1 DB: Oracle9i 接続プール:javax.sql.DataSourceを利用 ――――――――――――――――――――――――――――――――――― 現在上記のような環境でStrutsを用いて開発を行っています。 XPで作成したソースを、MiracleLinux上に移動させテストを 行っています。XP上で下記のようなタグの記述でローカルで動かしている 場合は問題なく動作しますが、 <bean:define id="sexCode" value="<%= rs.getString("SEX_CODE") %>" /> <logic:equal name="sexCode" value="F">女</logic:equal> <logic:equal name="sexCode" value="M">男</logic:equal> MiracleLinux上で同じソースを動かすと org.apache.jasper.compiler.ParseException: /KensaKekka.jsp(81,74) 属性 SEX_CODE には値が指定されていません といったエラーが出力されます。ResultSetからデータがうまくとりだされて いないのかと思い。<%= rs.getString("SEX_CODE") %>の内容を表示させましたら、 期待したデータを取得することができました。taglibのパスがおかしいのかと 思いましたが設定も問題ありませんでした。 (一応簡単なStrutsタグを使って動作確認しました。) どなたか原因がお分かりでしたら、御教示お願いします。 P.S.本文とは関係ありませんが、このIT会議室で複数のキーワードを入れて 検索を行っても結果がゼロ件になってしまうのですが、複数同時に指定して 検索を行うことはできないのですか? [ メッセージ編集済み 編集者: 忍者鳥取県 編集日時 2003-09-09 14:47 ] [ メッセージ編集済み 編集者: 忍者鳥取県 編集日時 2003-09-09 16:33 ] | ||||
|
投稿日時: 2003-09-09 16:23
こんにちは
ニシトミです。 DB操作をしているクラス内でResultSetを生成した Statementがクローズされていませんか? taglibやStrutsには、疎いのでなんともいえませんが JSP内でResultSet使うの、やめて DBメソッド内でBean配列生成で JSPでget表示などでは、だめなのでしょうか? [ メッセージ編集済み 編集者: ニシトミ 編集日時 2003-09-09 18:02 ] | ||||
|
投稿日時: 2003-09-09 20:33
ありがちなことですが、JSPのファイルの文字コードが
SJISからEUC-JPになったというのはどうでしょうかね。 | ||||
|
投稿日時: 2003-09-10 10:34
早速のご返事ありとうございます。この例ではJSPでResultSetを使いまわして おりますが、現在JSP中にResultSetを入れないように変更しています。 とりあえず、Statementはクローズしてないみたいです。 | ||||
|
投稿日時: 2003-09-10 10:36
その辺りは大丈夫だと思います。 | ||||
|
投稿日時: 2003-09-10 10:39
解決と言うかなんというか・・・(・_・)フフ
下記のようなコーディングにするとLinux上でも正常に動作することが 確認できました。 <% String SEX_CODE = rs.getString("SEX_CODE"); %> <bean:define id="sexCode" value="<%= SEX_CODE %>" /> <logic:equal name="sexCode" value="F">女</logic:equal> <logic:equal name="sexCode" value="M">男</logic:equal> ご協力いただいた方々どうもありがとうございました。m(_ _)mペコリンコ | ||||
|
投稿日時: 2003-09-12 19:40
これって、マルチスレッドの際、大丈夫なんでしょうか? http://www.atmarkit.co.jp/fjava/rensai2/webopt04/webopt04.html とか。<!% じゃ無ければ、大丈夫って事でしょうか? setattribute関係だと、struts-config.xmlでredirect=trueになっていないか等の 確認も必要だと思います。 | ||||
|
投稿日時: 2003-09-12 20:30
<% %>で囲まれた部分(スクリプトレット)は、_jspServiceメソッド内に展開されます。 つまり、ここでのSEX_CODEはローカル変数になっていますので、スレッド間の排他制御を 気にする必要はありません。 <!% %>で囲まれた部分(宣言)はメソッドの外に展開されます。つまりインスタンス変数や クラス変数になりますので、注意が必要です。 JSPの各部分がどう展開されるかは、展開されたソースを読んでみるといいですよ。 | ||||
1
