what's new jsf 2.2 & cdi & el · cdiとは contexts and dependency injection(cdi)...
TRANSCRIPT
![Page 1: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/1.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
What's New JSF 2.2 & CDI & EL
![Page 2: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/2.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
自己紹介
加藤田 益嗣(Masuji Katoda)
アイエックス・ナレッジ株式会社 サービスインテグレーション事業部
ICTソリューション部
事業内容 コンサルティング
システム開発
システムマネージメント
システム検証
![Page 3: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/3.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFとは
![Page 4: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/4.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFとは
JavaServer Faces(JSF)
Java標準のWebアプリケーションユーザインターフェースフレームワーク
JavaでWeb画面開発を行う為の仕様
![Page 5: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/5.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの仕組み
コンポーネントベース開発
一般的なStrutsやRailsのようなWebのリクエストベースの開発ではなく画面に配置したコンポーネントに処理を紐付けるコンポーネントベースの開発
ボタンや入力項目と処理を紐付ける
VBのような開発
ボタン 処理
![Page 6: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/6.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの現状
JSF2.0(2009年)
Java EE 6リリース
Facelets、Ajax、ブックマーカビリティ、複合コンポーネント、アノテーションによる宣言、CoC
JSF2.2(2013年3月)
Java EE 7リリース
![Page 7: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/7.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSF2.2で追加された機能
![Page 8: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/8.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSF2.2で追加された機能
1.HTML5サポート
HTML5で追加されたタグや属性に対応
パススルーアトリビュートが導入されdata-で始まるような未確定なタグ属性についても出力可能
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://xmlns.jcp.org/jsf/passthrough">
<h:form>
<h:inputText value="#{bean.value}" p:placeholder="Enter text"/>
</h:form>
</html>
そのまま出力される
![Page 9: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/9.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSF2.2で追加された機能
2.リソースライブラリコントラクト
テンプレートやスタイルを切り替える仕組み
リソースの配布や切替が容易になる
META-INF/contracts/
layout_a/
style.css
layout_b/
style.css
<application>
<resource-library-contracts>
<contract-mapping>
<url-pattern>/*</url-pattern>
<contracts>layout_a</contracts>
</contract-mapping>
</resource-library-contracts>
</application>
![Page 10: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/10.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSF2.2で追加された機能
3.Facesフロー
画面遷移をフローというまとまりとして管理する仕組み
特定の画面遷移中にFlowScopeという対話スコープのようなものが提供される
ショッピングカートのような画面で利用
META-INF/
flow/
first.xhtml
next.xhtml
end.xhtml
<flow-definition id="flow">
<view id="flow">
<vdl-document>
/flow/first.xhtml
</vdl-document>
</view>
</flow-definition>
![Page 11: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/11.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSF2.2で追加された機能
4.ステートレスモード
サーバ側でコンポーネントツリーを保持しない
アクセスの度にコンポーネントツリーを作り直す
ステートレスな画面開発が可能 <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:view transient="true">
<h:body></h:body>
</f:view>
</html>
f:vewで囲み
transient=“true”を指定する
![Page 12: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/12.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSF2.2で追加された機能
その他の機能
ファイルアップロード機能の提供
ファイルのアップロードに対応
Ajaxによるファイルアップロードも可能
CSRF対策
ViewActionの追加
カスタムコンポーネントアノテーション対応
![Page 13: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/13.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの基本的な仕組み
![Page 14: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/14.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの基本的な仕組み
コンポーネントツリー
html
body
form
input
input
button
html
body
form
input
input
button
Facelets
Bean value1 value2 exec()
SessionBean
Entity
HTTP
ブラウザ
サーバ
![Page 15: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/15.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの基本的な仕組み
ライフサイクル
1.RestoreView 2.Apply Request
Values
3.Process
Validations
4.Update Model
Values
5.Invoke
Application
6.Render
Response
![Page 16: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/16.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの基本的な仕組み
処理シーケンス ブラウザ サーバ
1、6
1、2、3、
4、5
6
![Page 17: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/17.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの基本的な仕組み
JSFを構成するもの
画面
Facelets
EL
サーバ
バッキングビーン(ManagedBean or CDI)
ビジネスロジック(SessionBean and Entity)
![Page 18: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/18.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの基本的な仕組み
画面
Facelets
FaceletsというXHTMLベースのテンプレートエンジンを使用する
コンポーネント(タグ)を配置して画面を設計する
EL
値のマッピングにはELを使用する
![Page 19: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/19.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの基本的な仕組み
サーバ
バッキングビーン
値や処理を制御するJavaクラス
ManagedBeanまたはCDIとして作成する
ビジネスロジック
EJBやエンティティを使用したビジネス層
バッキングビーンから呼び出してビジネスロジックを処理する
![Page 20: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/20.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
ELについて
![Page 21: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/21.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
ELとは
Expression Language(EL)
演算の結果や値の参照結果を返却する簡易記法
テンプレートでJavaを記載するとコードが冗長になってしまうので、EL式を用いる
「#{式}」で記載する
EL2.2(Java EE 6)→ EL3.0(Java EE 7)
HTML インスタンス
出力
#{インスタンス.メソッド}
![Page 22: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/22.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
ELの機能
演算子、
様々な演算子が利用可能
算術演算子 +、-、*、/、%、div、mod
関係演算子 ==、!=、<、>、<=、>=、eq、ne、lt、gt、le、ge
論理演算子 &&、||、!、and、or、not
三項演算子 (a ? b : c)
empty
メソッド呼び出し
Java EE 6からはEL式でメソッドの参照が可能
#{hoge.action(val)}
![Page 23: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/23.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFとEL
値の出力
インスタンスを参照して結果を出力する
#{hoge.name}
カスタムコンポーネント
カスタムコンポーネントの属性値を指定する
<h:inputText value=“#{hoge.name}” />
![Page 24: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/24.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFとEL
オブジェクトの参照
ELでは暗黙的なオブジェクトが定義され利用可能
facesContext、param、paramValues、header、headerValues、cookie、initParam、application、component、flash、request、resource、view、cc
requestScope、sessionScope、applicationScope、flowScope、viewScope
バッキングビーンの参照
![Page 25: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/25.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
EL3.0のアップデート
Lambda式 ELでLambda式が使用可能(Java SE 8を待たずに使用可)
コレクションオペレーション コレクションに対してfilter、map等のストリームパイプライン
が使用可能
スタティックフィールド・メソッド参照 Enumの参照
![Page 26: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/26.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
EL3.0のアップデート
セミコロンオペレータ 「;」で複数の処理が記載
アサインメントオペレータ 「=」で値の代入が可能に
文字列連結オペレータ 「+=」で文字連結が可能に
![Page 27: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/27.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
CDIについて
![Page 28: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/28.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
CDIとは
Contexts and Dependency Injection(CDI)
インスタンスをインジェクト(注入)する仕組み
EJBやJSF等のいろんな仕様にまたがって使用される。
CDI1.0(Java EE 6)→ CDI1.1(Java EE 7)
インスタンス
CDI インジェクト
![Page 29: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/29.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
CDIの機能
依存性の注入(DI) クラスインスタンスをインジェクトする機能
@Inject
ライフサイクルの管理 インスタンスのライフサイクル管理
@RequestScoped、 @ConversationScoped、 @SessionScoped、@ApplicatonScoped、@Dependent
横断的な処理(AOP) ログ出力などの横断的な処理の追加
@Interceptor
![Page 30: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/30.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFとCDI
JSFとCDIの連携
CDIのクラスに@Namedアノテーションを付加する
FaceletsからEL式で参照する
@Named
public class Hoge {
public String getName(){}
#{hoge.name}
![Page 31: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/31.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
CDI1.1のアップデート
他の仕様との親和性の向上
JSFでViewScopedやFlowScopedが使用できるようになった
JSFのコンバータやバリデータで@Injectが使える
JTAで定義されている@Transactionalが使用できる
デフォルト有効化
以前はbeans.xmlを配置することでCDIが有効になっていたが、なにも配置しなくても有効になるようになった。
![Page 32: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/32.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの機能
![Page 33: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/33.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの機能(画面)
Faceletsテンプレーティング(ui)
http://xmlns.jcp.org/jsf/facelets
テンプレートや繰り返し処理を提供するコンポーネント
HTMLベーシック(h)
http://xmlns.jcp.org/jsf/html
bodyやformタグなどHTMLの基本的なタグを拡張したコンポーネントを提供する
Faceletsコア(f)
http://xmlns.jcp.org/jsf/core
コンバータやバリデータ、Ajax等、Faceletsに対するサポート的な機能を提供する
![Page 34: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/34.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの機能(画面)
テンプレート機能
Apache Tilesのような画面のテンプレート機能を提供する
テンプレート(template.xhtml)
利用側(templateClient.xhtml)
<div id="content">
<ui:insert name="content"></ui:insert>
</div>
<ui:composition template="template.xhtml">
<ui:define name="content">
content
</ui:define>
</ui:composition>
テンプレート名を指定
![Page 35: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/35.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの機能(画面)
複合コンポーネント(cc) http://xmlns.jcp.org/jsf/facelets
複合コンポーネントを開発する為に提供されるコンポーネント
パススルーアトリビュート(p) http://xmlns.jcp.org/jsf/passthrough
任意のHTMLタグ属性の出力方法を提供する
パススルーエレメント(jsp) http://xmlns.jcp.org/jsf
HTMLフレンドリーなマークアップ方法を提供する
デザイナーとの協業がやりやすくなる
![Page 36: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/36.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFの機能(サーバ)
outcome値による画面遷移
バッキングビーンで返す文字列で画面遷移先が決まる
「index」という文字列を返すと「index.xhtml」に遷移する
FacesContext
FacesContextインスタンスからSessionやRequestを始めとする大抵の情報にアクセスできる
![Page 37: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/37.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFのメリット・デメリット
![Page 38: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/38.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFを使用するメリット
わかりやすい開発
コンポーネントベースの開発のため画面部品と処理の紐付けがわかりやすい。
Javaを基本とした開発が可能(JavaScriptが隠蔽化されあまり使用しない)
再利用性
画面コンポーネントの部品化やCDIを利用している為ロジックの部品化がしやすい
後方互換性の高さ
Java EE 標準であるため仕様の信頼性が高い
後方互換性がしっかりしている
![Page 39: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/39.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
JSFを使用するデメリット
セッションを前提とした構成 サーバセッションを前提としたサーバ構築が必要
ステートレスモードはあるがバッキングビーン自体はサーバセッションを使用する
動的な画面生成に弱い コンポーネントツリーをサーバに保有する為、クライアント側
での動的な画面生成は難しい
パフォーマンス コンポーネントを大量に配置するとパフォーマンスが劣化する
内部実装の改善により解消されつつある
![Page 40: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/40.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
まとめ
![Page 41: What's New JSF 2.2 & CDI & EL · CDIとは Contexts and Dependency Injection(CDI) インスタンスをインジェクト(注入)する仕組み EJBやJSF等のいろんな仕様にまたがって使用される。](https://reader030.vdocuments.net/reader030/viewer/2022040912/5e86de63110cd449824e54f9/html5/thumbnails/41.jpg)
CONFIDENTIAL Copyright(c) 2013 IX Knowledge Inc. All Rights Reserved
まとめ
JSF2.2によって得られるもの
新規機能も多いが、CDIとの相性向上、ファイルアップロード、ステートレスモードなど開発するに当たって細かい機能改善が多く取り込まれている。
まだ新機能部分にはバグも多く、対応サーバも少ないので2.2を見越した上で直近は2.0で開発するのが現状の選択肢
JSFを使ってきて思うこと
JSF1.2の時代には冗長なコード、必要な機能の欠如など足りない点が多かったが、2.0でかなり別物となった。
JSFとNetbeanを使用することでかなり生産性が向上する