Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

JSPのJSTLとJSFの混在 – Unified EL(Expression Language)

      2013/07/15

JSFだけでJSPを書いていると、JSPのタグも使いたくなることがあります。今回maznがやりたいと思ったことは、JSFで複数のテーブルを繰り返し出力させる方法です。

単一のテーブルならばJSFのタグ( <h:dataTable>)を使って簡単に作成できますが、さらにこのテーブルを以下のように複数作りたい時に、JSFだけのタグだとうまくいきません。

名前 hogehoge
年齢 21
性別
名前 gehogeho
年齢 45
性別

そこで少し調べて見たところ、JavaEE5からのJSP2.1とJSF1.2からサポートされているUnified-EL (Unified Expression Language)で簡単に実現できました。

JSPはEL式を”${ … } “と、JSFでは “#{ … }”と書きます。JavaEE5からはこの二つを混ぜることができます。つまり複数テーブルを出したい場合はJSTLの<c:forEach>タグを使ってループさせ、中でJSFのタグを使って以下のような感じで複数テーブルを作成することができます。

<c:forEach item="#{personManagedBean.datas}" value="data">
	<table>
	<tr><td>名前</td><td><h:outputText value="#{data.name}"/></td></tr>
	<tr><td>年齢</td><td><h:outputText value="#{data.old}"/></td></tr>
	<tr><td>性別</td><td><h:outputText value="#{data.sex}"/></td></tr>
	</table>
</c:forEach>
 ※なにも見ずに書いたので間違ってるかも

personManagedBeanというマネージドビーンのdatasはList型で、1テーブルに必要なデータが複数入っています。この中の1データをdataという変数で取り出し、JSFの<h:outputText>で内容を出力しています。今回は<table>を使っていますが、<h:dataTable>でも動くと思います。

ちなみにJBoss4.2のJSP, JSFは対応しています。

 - IT技術, プログラミング ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
ハードディスクへのアクセスが異常に遅い@Windows XP

Windowsの動作が異常に遅いPCがあって、調査していたらHDDへのアクセスが …

no image
電源ボタンを押して休止状態(ハイバネート)にする@Fedora 14

電源ボタンを押すと、デフォルトではシャットダウンプロセスが走りますが、休止(hi …

no image
Raspberry Pi 2でHDMIから画面が出力されない

Raspberry Pi 2 でOS(Ubuntu)を再起動すると、HDMIから …

no image
tailの結果を2回grepすると表示されない@Linux

こんな感じで、grep するとマッチするはずのaaaaがなぜか何も表示されません …

no image
KVM on KVM @ Fedora 17

最近のLinuxカーネルは、KVMのネスト (KVMのゲストOS上でKVMを動か …

no image
TCP Wrapper の設定チェック@Linux

昔からあるアクセス制限の方法として、TCP Wrapperがあります。 /etc …

no image
NICに複数のIPを付与する方法@Linux

1つのNICに複数のIPをつける方法の覚え書き。eth0にもう一つIP(192. …

no image
自分のWebページにTwitterの呟きを表示

WordPressのTwitter表示プラグインが重たいので、直接以下のコードを …

no image
二本指でのスクロールの向きを逆にする@Windows8

Windows8 のタッチパッドは二本指でスクロールが可能ですが、タッチスクリー …

no image
IPアドレスの範囲からサブネットマスクを簡単に計算する@CentOS 5

ちょっとしたアタックがあるIPからあった場合に、whois で IP の情報調べ …