2009-07-27 12 views
0

私は、これは4つの列を返す

JSPのデータベースの結果が正しく

<sql:query var="libraries" dataSource="jdbc/ArabiTagOnline"><br> 
    SELECT l.LibraryId, v1.LAvalue AS "dbESTid", v2.LAValue AS "LibName", v3.LAValue AS "Desc" 
    FROM ((Library l LEFT JOIN LibAttrValue v1 ON l.LibraryId = v1.LibraryId AND v1.AttributeId = 1) 
    LEFT JOIN LibAttrValue v2 ON l.LibraryId = v2.LibraryId AND (v2.AttributeId = 2 OR v2.AttributeId IS NULL)) 
    LEFT JOIN LibAttrValue v3 ON l.LibraryId = v3.LibraryId AND (v3.AttributeId = 6 OR v3.AttributeId IS NULL) 
<\sql:query 

JSPのMySQLのクエリを持っています。 私はASと結果の列の名前を変更しようとしましたが、ページをロードする際の結果

<c:forEach var="libraryResults" items="${libraries.rows}"> 
    <tr> 
     <td>${libraryResults.Libraryid}</td> 
     <td>${libraryResults.dbESTid}</td> 
     <td>${libraryResults.LibName}</td> 
     <td>${libraryResults.Desc}</td> 
    </tr> 
</c:forEach> 

繰り返し処理を行う場合、列 dbESTidLibNameDescは空白になっています。

私は ${libraries.columnNames}と尋ねましたが、私のクエリのAS文がカラムの名前を変更していないことを発見しました。それらはまだすべてLAValueです。 ${libraryResults.LAValue}のみDescを返します。どのように私はこのテーブルに値を入れることができますか?

答えて

2

SQLの列エイリアスを二重引用符で囲む必要はありません。これはjdbcドライバを混乱させる可能性があります。また、なぜ<sql-query>内に区切りタグがありますか?

列エイリアシングである必要があります。問題は、一つの可能​​な回避策を持続する場合は、各行内の列を反復することです:言わ

<c:forEach var="libraryResults" items="${libraries.rows}"> 
    <tr> 
    <c:forEach var="column" items="${libraryResults}"> 
     <td><c:out value="${column.value}"/></td> 
    </c:forEach> 
    </tr> 
</c:forEach> 

、あなたがする必要はありませんので、当然のことながら、MVCフレームワークを使用することです本当ソリューションクエリをJSPに埋め込みます。

関連する問題