JSF 2 のサポート

概要

JViews Web テクノロジーは、Sun™ JSF 2.0 Reference Implementation に対する基礎サポートを提供し、次の機能を備えています。
  • JViews JSF コンポーネントは、Sun JSF 2.0 Reference Implementation ランタイムで動作します。
  • JViews JSF コンポーネントは、JSF 2 のカスタム・コンポーネント機能をサポートします。
  • JViews JSF コンポーネントは、JSF 2 の Facelets 2 テクノロジーをサポートします。
  • JViews JSF コンポーネントは、<f:ajax> タグを使用することなく、JSF2 部分ページ・レンダリング・テクノロジーをサポートします。
メモ
JViews Web テクノロジーは、独自の Ajax 実装を装備しているため、JSF 2 Ajax メカニズムを使用しません。JViews JSF コンポーネントとその他の JSF 2 コンポーネントの両方を同じページで使用する場合、JViews コンポーネントから送信される Ajax 要求は、JSF 2 Ajax キューに入らず、JSF 2 Ajax メカニズムで管理されません。

JSF 2 を使用するための前提条件

JViews コンポーネントを有効にして JSF 2 ランタイムをサポートするには、JSF 2 固有の jar をアプリケーションのクラスパスに追加する必要があります。次に例を示します。
classpath=jviews-jsf2-facelets-support.jar; jviews-xxx-all.jar

JViews JSF コンポーネントを使用した JSF 2 の部分ページ・レンダリング機能のトリガー

JViews は、ajaxInteractor という新しい JSF 2 固有の Facelets インタラクターを提供して、<f:ajax> タグを使用することなく、JSF2 の部分ページ・レンダリング (PPR) 機能をユーザーがトリガーすることを可能にします。
ajaxInteractor により、開発者は、PPR アクションを、自身が指定する別の JSF 2 コンポーネントに対してトリガーすることができます。ajaxInteractor が付けられたビューをユーザーがクリックすると、jsf.ajax.request() クエリーが送信されて、指定された ID を持つ JSF 2 コンポーネントが再レンダリングされ、ページ全体の更新が必要ありません。

属性

名前
必須
タイプ
説明
id
true
java.lang.String
コンポーネントの ID。
render
true
java.lang.String
ajaxInteractor がレンダリングするコンポーネントの ID。このコンポーネントは、JSF 2 を有効にし、指定されたコンポーネントを再レンダリングするための jsf.ajax.request() クエリーを送信します。
レンダリング対象の ID が複数ある場合は、スペースで区切ります。

使用法

ajaxInteractor を使用するには、JSF 2 Ajax JavaScriptライブラリーがページにインポートされている必要があります。
次のコード例は、JSF 2 Ajax JavaScript ライブラリーをインポートする方法を示しています。
<h:outputScript name="jsf.js" library="javax.faces" target="head" />
interactorGroup を使用すると、ajaxInteractor を他のどのようなインタラクターとでも組み合わせることができます。
次のコード例は、ajaxInteractor を他のインタラクターと組み合わせる方法を示しています。
<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:jvf="http://www.ilog.com/jviews/tlds/jviews-framework-faces.tld"
   xmlns:jv="http://www.ilog.com/jviews/tlds/jviews-faces.tld" >

<h:body>
   <h:form prependId="false" id="helloForm">
      <h:outputScript name="jsf.js" library="javax.faces" target="head" />

      <h:outputText id="out1" value="#{count1.number}" />
      <h:outputText id="out2" value="#{count1.number}" />

      <jvf:objectSelectInteractor id="select"
          valueChangeListener="#{frameworkBean.selectObject}"
          invocationContext="IMAGE_SERVLET_CONTEXT" />
      <jv:ajaxInteractor id="ajax" render="out1 out2" />
      <jv:interactorGroup id="interactorGroup" interactors="select ajax" />
      <jvf:view id="view" style="width:500px;height:300px"
          view="#{frameworkBean.view}" interactorId="interactorGroup" />

   </h:form>
</h:body>

JSF 2 コンポーネントを使用した JViews JSF コンポーネントのレンダリング

JViews コンポーネントをレンダリングするには、JSF コンテナー・タグ ( h:panelGrid など) を使用して、JViews コンポーネントをラップし、この panelGridid をレンダリングします。
<h:commandButton id="button1" value="diagrammer"
   onclick="jsf.ajax.request(this,event,{render:'diagrammer_panelgrid'});return false;" />

<h:panelGrid id="diagrammer_panelgrid">
   <jvdf:diagrammerView id="diagrammer"
      style="width:500px;height:300px" data="/data/molecule.idpr"/>
</h:panelGrid>