JavaEE 7 JSF 2.2のすげーいいところ
まずはJSF2.2のすげーいいところを軽く書く。簡単で効果が大きいもの。
解説用ということで前提となる知識を減らすためにCDIもなにも使わない。AJAXもなにもつかわない。
マネージドビーン
package jsf; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.bean.ViewScoped; @ManagedBean @ViewScoped public class Hoge { String text = "初期値"; public String action1(){ text = "action1"; return null; } public String action2(){ text = "action2"; return null; } public String getText() { return text; } }
このコードから画面に登場するものは以下のものであることが予測できると思う。
- 表示用のゲッターのみのtextプロパティ
- 2つのアクションボタン
テンプレート
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:jsf="http://xmlns.jcp.org/jsf"> <head jsf:id="head"> <title>JSF 2.2ですね</title> </head> <body jsf:id="body"> <form jsf:id="form"> #{hoge.text} <hr/> <input type="submit" value="アクション1" jsf:action="#{hoge.action1}" /> <input type="submit" value="アクション2" jsf:action="#{hoge.action2}" /> </form> </body> </html>
はい、普通のHTMLですね。「jsf:なんちゃら」と書くとそこはJSFコンポーネントとして認識されるようになります。jsfcを利用していた時はコンポーネント名をいれるためすべてきっちり把握する必要があったのに対してこれは非常にわかりやすい。とりあえず「jsf:id」をいれといてくれればいいため、デザイナに任せることも可能になった。