- PR -

JSTLについて

1
投稿者投稿内容
唐ワっちくん
会議室デビュー日: 2004/01/16
投稿数: 9
投稿日時: 2004-01-19 08:55
おはようございます

データソース1
<sql:setDataSource url="jdbc:oracle:thin:@localhost:1521:****" driver="oracle.jdbc.OracleDriver" user="****" password="****" var="ds1" />
データソース2
<%
InitialContext initCtx = new InitialContext();
DataSource ds2 = (DataSource)initCtx.lookup("java:comp/env/jdbc/oracle");
%>

このようなデータソースがある場合、
<sql:query sql="select * from jobtbl" var="rs" dataSource="${ds1}">
これはもちろん正常に処理されるのですが、
<sql:query sql="select * from jobtbl" var="rs" dataSource="${ds2}">
このような通常のプログラムソースの変数を、カスタムタグの変数へ渡すことは無理なのでしょうか?
処理させたい内容は見てもらってわかるでしょうか?このような場合は独自のカスタムタグを作成しないといけないのでしょうか?


[ メッセージ編集済み 編集者: 唐ワっちくん 編集日時 2004-01-22 03:33 ]
ゴゴミル
会議室デビュー日: 2004/01/15
投稿数: 7
投稿日時: 2004-01-19 23:24

実際にJSTLは使用した事が無いので間違っているかもしれませんが・・・。
JSTLの<sql:query>の仕様
(http://jcp.org/aboutJava/communityprocess/final/jsr052/)を読んでみると、
<sql:query>のdataSource属性には、『javax.sql.DataSource or String』、
『Dynamic=true』となっているので可能だと思います。
jakrtaで実装されているJSTL1.0 RTバージョンでは、
<attribute>
<name>dataSource</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
となっていますしね。

<sql:query sql="select * from jobtbl" var="rs" dataSource="${ds2}">

<sql:query sql="select * from jobtbl" var="rs" dataSource="<%=ds2%>">
ではないでしょうか?

また、jakartaのJSTL1.0 ELバージョンではsql.tldを見る限りでは
使用できないっぽいです。
唐ワっちくん
会議室デビュー日: 2004/01/16
投稿数: 9
投稿日時: 2004-01-20 13:17
返事ありがとうございます。
JNDIから「DataSource」オブジェクトを取り出したかったのですが、以下のように取り出す事ができました。

--***.jsp--------------------------------------------------------
| <%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql" %>
| <sql:query var="rs_job">select * from jobtbl</sql:query>
| <c:forEach var="row" items="${rs_job.rows}" varStatus="staus">
| <c:out value="${row.jobname}" />
| </c:forEach>
-----------------------------------------------------------------

--web.xml--------------------------------------------------------
| <context-param>
| <param-name>javax.servlet.jsp.jstl.sql.dataSource</param-name>
| <param-value>jdbc/oracle</param-value>
| </context-param>
-----------------------------------------------------------------

このように記述するこで、解決できました。
ちなみに
<sql:query sql="select * from jobtbl" var="rs" dataSource="jdbc/oracle">
といった感じで、JNDIを直接記述することで、「DataSource」オブジェクトをセットできました。
ご返事ありがとうございました。

[ メッセージ編集済み 編集者: 唐ワっちくん 編集日時 2004-01-20 13:17 ]
唐ワっちくん
会議室デビュー日: 2004/01/16
投稿数: 9
投稿日時: 2004-01-22 04:10
同じ内容の質問になりますが、
 request.getRemoteUser()
 <x:if select="@ユーザID='****'">
request.getRemoteUser()で取り出されたユーザIDを元に、<x:if>タグのXPathとして値を代入したいのですが、このような場合はどのようにしたらよいのでしょうか?
以前の事柄は要素の値として、決まった値だったので問題なく解決できたのですが、カスタムタグへの動的な値を渡したい場合どのようにしたらよいのでしょうか?
カスタムタグの内部での処理の順番なのかわからないですが、
<x:if select="<%=request.getRemoteUser() %>">
この指定方法がうまく行えませんでした。

[ メッセージ編集済み 編集者: 唐ワっちくん 編集日時 2004-01-22 04:56 ]

[ メッセージ編集済み 編集者: 唐ワっちくん 編集日時 2004-01-22 15:38 ]
1

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