2011-01-09 7 views
1

まず、私はそれを明確にする必要があります。これは学術的なプロジェクトのためのものです。私はこれが私がしなければならないことをする間違った方法だとわかっていると言わなければならないと感じていますが、それは私がそれをやらなければならない方法です。JSTL SQLの結果をサーブレットに転送する

ブラウザが電話機であるかどうかに応じて、JSTLまたはサーブレットを通じてSQLクエリの結果を表示する必要があります。私はJSTLの部分を管理し、それが電話かどうかを判断しました。サーブレットに転送できます。

問題は、私はサーブレットから結果変数にアクセスできる必要があります。スコープをアプリケーションに設定できるので、次のJSTLページからこれにアクセスするのは簡単ですが、サーブレットからアクセスする方法についてはわかりません。

私が試してみた:

request.getParameter("viewResult"); 

をしかし、私は、私は

javax.servlet.jsp.jstl.sql.Result 

オブジェクトが必要と考えているのに対し、これは、文字列を返します。

転送時にJSTL JSPページのオブジェクトをサーブレットに渡す方法を知っている人はいますか?

答えて

2

HttpServletRequest#getParameter()は、暗黙的に常にStringsであるHTTP要求パラメータを返します。これは、HTTP仕様で指定されているためです。

あなたはむしろrequest属性として設定する必要があります。 varの属性がsql:queryの場合、これを行うことができます。以下のように、それはサーブレットではご利用になれます

<sql:query dataSource="${dataSource}" var="result" scope="request"> 
    SELECT * FROM foo 
</sql:query> 
<jsp:include page="/servletURL" /> 

この方法:これは確かにベストプラクティスではないことは言うまでもない


Result result = (Result) request.getAttribute("result"); 
。これらのタグは、実際のアプリケーション(Sun/Oracle自身の言葉)ではなく、素早いプロトタイプ用に設計されています。サーブレットのメソッド doGet()または doPost()のDB結果を取得する必要があります(前処理および後処理用)。

+0

完璧に動作します。ありがとうございます。 – Jim

+0

あなたは大歓迎です。 – BalusC

+0

うん、それは問題だった、それを忘れてしまった。これで修正され、すべて動作しています。 – Jim

関連する問題