とても簡単でシンプルすぎるくらいシンプルなのですが、
エントリー一覧から、エントリーの内容を表示するものです。
エントリー一覧
リンクをクリックすると、さらにJSPでエントリーの内容を表示するようにしてみました。
jspの構成は2つからなります。
entry_list.jsp...エントリーの一覧を表示するもの。
entry.jsp...ひとつのエントリーの内容を表示するもの。
entry.jspには引数としてentry_idを与えます。パラメタ名は"id"です。
(1)entry_list.jsp
とりあえずは、エントリーのタイトルだけを、登録日の降順に表示しています。
クエリは
select entry_id,entry_title
from mt_entry
where entry_status = 2
order by entry_created_on desc
の部分です。検索条件の entry_status = 2というのは下書きモードのものを除いています。
リンク部分は、htmlタグを用いています。
<html:link action="entry.jsp?id=${row.entry_id}">
の部分です。
とび先は、entry.jsp、idにqueryから取得したentry_idを指定しています。
(2)entry.jsp
ちょっぴり工夫(?)したのは、Convert Line Breaksの指定。
これが指定されている場合は、改行コードをbrタグに置き換えないといけないので。
でも、指定されていない場合はそのままの表示です。
この対応は、クエリ上でやってしまうことにしました。caseを使いました。
entry_convert_breaksが'0'の場合はそのまま
'1'の場合は、改行コードを変換しています。
また、バインド変数の指定ですが、
<sql:param value="${param['id']}" />
こうやって指定します。
(?が出てきた順に割り当てられます。)
※実は、クエリが1行しか値を返さないときの、値のとり方がわかっていないのです(恥)。
なので、forEach使っちゃっていますが、もっと良い方法がみつかったらまた更新することにします。
本当は....
MTのテンプレートをまだまだ使いこなせない私は(使いこなせないどころかちっともわかっていない)、自分でもできそうなsqlタグでのアクセスが楽しくてたまりません。
これなら、いろいろできそうです。
テーブル構成さえわかれば、条件も好き勝手に検索できるし。更新もできます。
でも、本来の目的からははずれちゃっていますね(笑)。
そもそも、MTを使っているのだから.....
このエントリーの目的は、Tomcat5.5とコネクションプール、それからタグライブラリの使い方のメモであって、エントリーを表示するのが目的ではないはず....。でした。
entry_list.jsp...エントリーの一覧を表示するもの。
entry.jsp...ひとつのエントリーの内容を表示するもの。
entry.jspには引数としてentry_idを与えます。パラメタ名は"id"です。
(1)entry_list.jsp
<% response.setContentType("text/html;charset=UTF-8"); %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql" %>
<%@ page pageEncoding="euc-jp" %>
<sql:query var="rs" dataSource="jdbc/postgres">
select entry_id,entry_title
from mt_entry
where entry_status = 2
order by entry_created_on desc
</sql:query>
<html>
<head>
<title>Entries</title>
<link rel="stylesheet" href="http://blog.kiyo.com/styles-site.css" type=
"text/css" />
</head>
<body>
<div id="container">
<div id="banner">
<h1><a href="http://blog.kiyo.com/">megu's blog</a></h1>
</div>
<div class="content">
<div class="contenttitle">
Entry Titles
</div>
<c:forEach var="row" items="${rs.rows}">
<html:link action="entry.jsp?id=${row.entry_id}">
${row.entry_title}</html:link><br />
</c:forEach>
</div>
</div>
</body>
</html>
エントリーリストを表示するjspです。とりあえずは、エントリーのタイトルだけを、登録日の降順に表示しています。
クエリは
select entry_id,entry_title
from mt_entry
where entry_status = 2
order by entry_created_on desc
の部分です。検索条件の entry_status = 2というのは下書きモードのものを除いています。
リンク部分は、htmlタグを用いています。
<html:link action="entry.jsp?id=${row.entry_id}">
の部分です。
とび先は、entry.jsp、idにqueryから取得したentry_idを指定しています。
(2)entry.jsp
% response.setContentType("text/html;charset=UTF-8"); %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql" %>
<%@ page pageEncoding="euc-jp" %>
<sql:query var="q_entry" dataSource="jdbc/postgres">
select entry_title
,case
when entry_convert_breaks = '0' then
entry_text||entry_text_more
else
replace(entry_text ,'\n','<br />\n')
||
replace(entry_text_more , '\n','<br />\n')
end as entry_text
from mt_entry
where entry_id = ?
<sql:param value="${param['id']}" />
</sql:query>
<html>
<head>
<title>entry</title>
<link rel="stylesheet" href="http://blog.kiyo.com/styles-site.css" type=
"text/css" />
</head>
<body>
<c:forEach var="row" items="${q_entry.rows}">
<div id="container">
<div id="banner">
<h1><a href="http://blog.kiyo.com/">megu's blog</a></h1>
</div>
<html:link action="entry_list.jsp">Back</html:link>
<div class="content">
<div class="contenttitle">
${row.entry_title} <br />
</div>
${row.entry_text} <br />
</div>
<html:link action="entry_list.jsp">Back</html:link>
</div>
</c:forEach>
</body>
</html>
上はひとつのエントリーの内容を表示するjspです。ちょっぴり工夫(?)したのは、Convert Line Breaksの指定。
これが指定されている場合は、改行コードをbrタグに置き換えないといけないので。
でも、指定されていない場合はそのままの表示です。
この対応は、クエリ上でやってしまうことにしました。caseを使いました。
entry_convert_breaksが'0'の場合はそのまま
'1'の場合は、改行コードを変換しています。
また、バインド変数の指定ですが、
<sql:param value="${param['id']}" />
こうやって指定します。
(?が出てきた順に割り当てられます。)
※実は、クエリが1行しか値を返さないときの、値のとり方がわかっていないのです(恥)。
なので、forEach使っちゃっていますが、もっと良い方法がみつかったらまた更新することにします。
本当は....
MTのテンプレートをまだまだ使いこなせない私は(使いこなせないどころかちっともわかっていない)、自分でもできそうなsqlタグでのアクセスが楽しくてたまりません。
これなら、いろいろできそうです。
テーブル構成さえわかれば、条件も好き勝手に検索できるし。更新もできます。
でも、本来の目的からははずれちゃっていますね(笑)。
そもそも、MTを使っているのだから.....
このエントリーの目的は、Tomcat5.5とコネクションプール、それからタグライブラリの使い方のメモであって、エントリーを表示するのが目的ではないはず....。でした。
投稿者 megu : 2004年09月16日 19:16
