PrimeFacesの4.0では幾つかコンポーネントが増えるのですが、その1つにstickyコンポーネントがあります。
正式リリースの前ですが、SNAPSHOTを触ってみました。
stickyは名詞では「付箋(紙)」、形容詞では「粘着性のある」といった意味のようです。
http://eow.alc.co.jp/search?q=sticky
コンポを触ってみるとわかりますが、target属性で指定したコンポーネントを画面の一部にペタっとへばりつかせることができる感じです(^^;
Showcaseは以下にあるので、ブラウザのスクロールバーを下へもっていってみて下さい。
http://www.primefaces.org/showcase/ui/sticky.jsf
Stickyで指定するコンポーネントは何でもよさなので、メッセージをサンプルに使ってみました。
ページの上段にスケジュールコンポを置いて
その下に必須のテキストがあります。
メッセージエリアは上段に固定されていて、ボタン押下すると表示されます。
必須テキストも赤くなってますが、下にあるのでメッセージエリアはみえません。
この例は少し雑ですが、業務系のシステムとかでは、メッセージ表示するエリアは(ダイアログ系を除いて)固定のエリアに表示したりするケースが多い気がします(今回のようなテキストに対するエラーはテキストの横に出したりすることもあると思いますが、画面全体にかかわるようなエラーの場合)
で、stickyコンポーネントで、メッセージコンポーネントを指定すると以下のような表示になります。
stickyコンポーネントを定義する前のビュー定義は以下です。
<?xml version='1.0' encoding='UTF-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="frm">
<p:messages id="msg" />
<p:schedule />
<p:inputText id="txtReq" required="true" requiredMessage="必須ですよー"/>
<p:commandButton value="送信" ajax="false" action="index.xhtml" />
</h:form>
</h:body>
</html>
で、先ほどの例みたいにメッセージエリアを固定的に表示したい場合はformの中に以下コンポを追加して置くだけです(^^)簡単に追加できるのがありがたい。
<p:sticky target="frm:msg" />
自分の場合は、実際の案件で、一覧情報が多い場合に(件数制限してページングしつつも)、あるユーザさん達は非常に小さい解像度で画面をみるから上段メッセージがみえない。みたいな指摘があったこともあったりしたので、こういうコンポで手軽に対応したいなぁと思ったり(^^;