API リファレンス
ダウンロード
- RSSの取り出しに失敗しました:http://sourceforge.jp/projects/paraselene/releases/rss
では記事生成部を作成します。
記事は3つまでの繰り返しとなりますが、普通にやろうと思うと Paraselene では簡単に作成できません。name が被ると配列化を引き起こすため各<DIV>の特定が困難になります。
そのため、BlogHtml インスタンスをもう1つ準備し、そこへ記事を書き込み、記事部分を丸ごと this へ複製する事で処理を実現する事にします。
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
private void addArticle( int no ) { if ( Article.db.size() <= no ) return; BlogHtml dummy = (BlogHtml)PageLoader.getPageFactory().getPage( PageType.BLOG_HTML ); Article article = Article.db.get( no ); dummy.getJumpA().setAttribute( new Attribute( "name", "jump" + Integer.toString( no % MAX_ARTICLE ) ) ); dummy.getDateDiv().setValueString( article.getDate() ); dummy.getTitleDiv().setValueString( article.title ); dummy.getTextDiv().setValueString( article.text ); Text category = new Text( "カテゴリ: " ); for ( int i = 0; i < article.category.length; i++ ) { if ( article.category[i] ) { category.append( Article.CATEGORY[i] ); category.append( " " ); } } dummy.getCategoryDiv().removeHTMLPart(); dummy.getCategoryDiv().addHTMLPart( category ); this.getMainDiv().addHTMLPart( dummy.getArticleDiv().getReplica() ); }
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
public Page outputMain( Page from, RequestParameter req ) throws PageException { // 出力内容を設定します。 // 初期化したい場合は、init()をコールして下さい。 getMainDiv().removeHTMLPart(); for ( int i = 0; i < MAX_ARTICLE; i++ ) { addArticle( page * MAX_ARTICLE + i ); } return this; }
ただし、このままでは記事が正しく表示されません。
| 記事は3件まで表示。<BR>それより多い場合は、前へ、次へリンクで移動。 |
Paraselene がタグを自動的にエスケープしてしまいます。
これは、
| 記事は3件まで表示。 それより多い場合は、前へ、次へリンクで移動。 |
と表示されなければなりません。
※画像もリンク切れとして表示されていますが、後で処理を追加します。
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
private void addArticle( int no ) { if ( Article.db.size() <= no ) return; BlogHtml dummy = (BlogHtml)PageLoader.getPageFactory().getPage( PageType.BLOG_HTML ); Article article = Article.db.get( no ); dummy.getJumpA().setAttribute( new Attribute( "name", "jump" + Integer.toString( no % MAX_ARTICLE ) ) ); dummy.getDateDiv().setValueString( article.getDate() ); dummy.getTitleDiv().setValueString( article.title ); //dummy.getTextDiv().setValueString( article.text ); dummy.getTextDiv().removeHTMLPart(); dummy.getTextDiv().addHTMLPart( new PlainText( article.text ) ); Text category = new Text( "カテゴリ: " ); for ( int i = 0; i < article.category.length; i++ ) { if ( article.category[i] ) { category.append( Article.CATEGORY[i] ); category.append( " " ); } } dummy.getCategoryDiv().removeHTMLPart(); dummy.getCategoryDiv().addHTMLPart( category ); this.getMainDiv().addHTMLPart( dummy.getArticleDiv().getReplica() ); }
通常のテキストは、Text クラスが処理しており、自動的に各種エスケープを行っています。
そこで、Text クラスの代わりに PlainText クラスを使用します。このクラスは、渡された文字列をそのまま無加工で出力しますので、ブラウザへは<BR>のまま出力されます。
|