HOME      

チュートリアルのメインページへ シンコム ホームページへ Cincom Smalltalkページへ

ドメインモデル 最初のWebコンポーネント ブログコンポーネント メニューコンポーネント カスタムセッション
UIの編集 エディタの再利用 Ajaxの使用 CSSの追加 外部ファイル
静的URL 作業の保存
静的URL

前回のセクションまでの作業が終わっていない場合、これまでに作成したコードなどをダウンロードできます。解凍して、ファイルインしてください。これにより、レッスン10までが終わった状態のイメージになります。

このセクションでは、静的(ブックマーク)URLを追加します。一般的なWebアプリケーションでは、単純なURLを通して、直接アクセスしやすい部分です。ブログの例では、特定の投稿に対するパーマリンクがそのよいサンプルになります。幸いにも、Seasideでは、簡単に実行することができます。

1. BlogRootUIクラスにinitialRequest:メソッドを追加するだけです。そして、パラメータを確認します。そして、次のように、URLで特定の投稿をサポートします。

http://localhost:7777/seaside/blogView?id=PostIDNumberGoesHere

initialRequest: aRequest
   super initialRequest: aRequest.
   aRequest at: 'id' ifPresent: [:idNumber |
      | postOrNil |
      postOrNil := Storage default posts detect: [:each | each id printString = idNumber] ifNone: [nil].
      postOrNil ifNotNil: [listComponent filterBlock: [Array with: postOrNil]]]

2. URLパラメータのチェックを追加します。すなわち、URLを利用できる状態にする必要があります。BlogListUIクラスに戻り、投稿のタイトルのレンダリング方法を修正します。

renderPost: aPost on: html
   html div
      class: 'post';
      with: [html paragraph: [self renderTitleOn: html for: aPost.
         html break.
         self session currentUser ifNotNil: [self renderEditLinkOn: html for: aPost].
         html html: aPost content.
         html break.
         html text: 'Posted at: ', aPost timestamp printString.
         html break.
         html text: 'Post by: ', aPost owner printString.
         html horizontalRule]]

renderTitleOn: html for: post
   "put a permalink on it"

   html strong: [ (html anchor)
               url: '/seaside//blogView?id=', post id printString;
               with: post title]

アンカーと一緒であることに注意してください。アプリケーションに関連するURLを渡しています(Seasideは"外部"URLとしてそれを見ています)。

3. 次にWebブラウザを起動して、blogViewエントリーポイントに移動します。

すべてのことが完了しました。アプリケーションに静的な参照ポイントを追加しました。すべての静的URLを適切にセットアップしてください。


レッスン12 作業の保存に続く