ブックマーク可能なWebページをJSFで作る

ブックマーク可能なWebページをJSF2.0で作るのは比較的簡単です。といってもどういうシステムを作るかにもよるので一概には言えませんが、例えばブックマーク可能なリンクを作り、HTTPのGETリクエストをサーバに送信し、その結果を返すようにするだけです。

...
<f:metadata>
    <f:viewParam name="p" value="#{bookBean.currentPage}" />
</f:metadata>
<h:body>
    ...
    <h:link outcome="#{bookBean.nextPage}" value="NextPage">
        <f:param name="p" value="#{bookBean.currentPage + 1}" />
    </h:link>
</h:body>

タグ内にタグを埋め込みbookBeanのcurrentPage+1とEL式で記述しています。
APサーバにディプロイし、このリンクタグにマウスカーソルをあてると以下のようなリンクが表示されると思います。

xxx/project-name/book.xhtml?p=次のページ番号

このリンクの「?p=次のページ番号」がGETリクエストで送信される内容です。

実際にBookBeanを適切に構築し、NexPageリンクで次ページに遷移し、そのページをブックマークして、ブラウザを再起動後にブックマークしたページをクリックするとそのページが表示されるはずです。

bookBeanはこんな感じです。

@Named
@SessionScoped
public class BookBean {
    private int currentPage;
    private int lastPage;

    public String getNextPage() {
        if (currentPage < lastPage - 1) {
            return "newpage";
        else {
            return "done";
        }
    }

    ...

    public int getCurrentPage() {
        return currentPage;
    }

}


getNextPageメソッドはタグ内のoutcomeで呼び出されます。このメソッドは最終ページかどうかによってい"newpage"か"done"を返します。

ナビゲーションルール等も含めて、プログラムの大部分を省略していますが、あくまでも自分が忘れないためのメモとして残しているので、興味のある方は自分で作りながら試してみてください。