TLDR: RichFaces は 2016 年 6 月に、十分に価値のある終焉を迎えました。
ここで、公式の移行ガイドは約 30% 完了していないことに注意してください。その指標として、移行ガイドに基づいて 2011 年に 378 行の XSLT スタイルシートを作成しました。その後、私は 2015 年 6 月までプロジェクトを中断し、さらなる調査と作業に基づいて、すでに 1090 行に達しています。どの XSLT スタイルシートにも、378/1090 = 約 35% のオーバーヘッドがあることに注意してください。
移行ガイドに記載されていることを行った後:
隣接するブラウザー タブで使用するコンポーネントごとに TLD/VLD で生成されたドキュメントをバージョンごとに 1 つずつ開き、慎重に比較します。属性の名前と目的には文書化されていない変更が多数あり、一部の属性は親コンテナーから子コンテナーに移動されています。
など、恣意的に削除された重要なものもありrich:page
ますrich:layout.
この記事の最後に、私が発見したいくつかの余分なもののリストを提供します。
その後、独自のスタイル クラス名も多数変更されているという不愉快な認識に直面することになります。そのため、独自のスタイル シートでこれらのいずれかのスタイルを定義した場合は、さらに多くの作業を行う必要があります。
また、独自のスタイル クラスを定義し、豊富なコンポーネントでそれらを指定して独自のスタイルを実装できるという彼らの主張は、まったく正しくないこともわかります。スタイル クラスは包含レベルで適用されますが、テーブル セルなどの多くの場合、テーブル セル レベルでフォントなどを定義するのに適していると考えられます。これらをオーバーライドできる唯一の方法は、セル スタイルを名前で再定義することです。
また、Rich Faces のスタイルシートの後にスタイルシートが含まれていることを確認する必要があります。3.3 では、彼らのものが最初に含まれていたため、これは自動的に行われました。それらは最後に含まれるようにh:outputStylesheet
なったので、後で確実に生成されるように、できるだけ遅く使用して実行する必要があります。
XSLT 変換を使用して移行ガイドを実装し、上記の 1-2 を達成しました。現在、1000 行を超えていますが、まだ完成していません。なぜ彼らがそのようなものを提供できなかったのかは、私には謎です.
リリース 3 と 4 の間でなぜこのような大きな変更を加える必要があると考えられたのかは、別のより深い謎です。非常に管理が行き届いていない商品です。再度移行したり、新たに展開したりすることはありません。
私が見つけた編集文書化されていない変更(簡潔にするためにXPath構文を使用):
a4j:status
ドキュメントはその点について曖昧ですが、属性は削除されました。属性を介して特定のウィジェットに結び付けられていない限りfor=
、デフォルトで最も近い親内で動作するようになりました。そのため、同じ地域内に複数ある場合、それらはすべて発砲します。a4j:region
status=
特定のウィジェットに適用する場合は、対応する属性status=
を変更する必要があります。a4j:status/@id
@name
すべてを修正しても、まだ機能しません。
a4j:status
with (削除された@for
) 属性が止まらない
@name
属性があり、何@id
もしません
- 両方とも
@name
、@id
止まらない。
rich:column/@breakBefore
今breakRowBefore
rich:page
削除されました。
rich:layout
削除されました。
rich:column/@sortOrder
現在は小文字でなければなりません。
rich:dropDownMenu/@value
今rich:dropDownMenu/@label
rich:dropDownMenu/@direction
とrich:dropDownMenu/@jointPoint
これらの値はそれぞれ と に{top-left, top-right, bottom-left, bottom-right}
変更されました。{tl, tr, bl, br}
{topLeft, topRight, bottomLeft, bottomRight}
rich:contextMenu/@submitMode
、rich:dropDownMenu/@submitMode
、rich:menuItem/@submitMode
これらはすべてrich:<whatever>/@mode
になり、値"none"
を に変更する必要があります"client"
。
rich:isUserInRole
これは、少なくとも私にとっては、Mojarra 2.2.08 と EL 2.2 では機能しなくなりました。幸いなことに、EL 2.2 ではもう必要なく、 を使用できますrequest.isUserInRole(...)
。
rich:menuGroup/@value
今rich:menuGroup/@label
。
rich:tab/@label
今rich:tab/@header
。
rich:tab/f:facet/@name[.='label']
今rich:tab/f:facet/@name[.='header']
。
rich:tabPanel/@activeTabClass
、rich:tabPanel/@contentStyle
、rich:tabPanel/@disabledTabClass
、rich:tabPanel/@inactiveTabClass
、rich:tabPanel/@tabClass
今tabActiveHeaderClass
、tabContentClass
、tabDisabledHeaderClass
、tabHeaderClass
、tabInactiveHeaderClass
、tabContentClass
それぞれ。
rich:tree/@adviseNodeOpened
これは削除され、rich:treeNode/@expanded
追加されました。これは十分に文書化されていません: EL である必要があり (例: "#{true}"
not ) 、ツリー ノード (例: ) または他の Beanの Bean プロパティにする"true"
ことができます。"#{node.expanded}"
ブール値でなければなりません。(新しいrich:collapsibleSubTable/@expanded
属性についても同様です。)
rich:tree/@nodeFace
今rich:tree/@nodeType
。
rich:tree/@switchType
今rich:tree/@toggleType
、そしておそらくrich:tree/@selectionType
。
rich:tree/@treeNodeVar
now var
、またはおそらく削除されたばかりです。
rich:treeNodesAdaptor
現在は、配列、ノードセット、...、またはrich:treeModelAdaptor,
または 以外のものを処理しなくなりました。また、その属性も失われており、私が見る限り、ネストされた使用のために完全に壊れています。現在使用できる属性は、祖先の属性のみです。たとえば、親ノードと現在の子ノードが同時に必要な場合、それらは単に利用できません。この変更には、重要な書き直し、または次のクラッジが伴います。Map
Iterable
var
var
rich:tree
年:
<rich:tree>
<rich:treeNodesAdapter var="vm_host">
<rich:treeNode .../>
<rich:treeNodesAdapter var="vm_guest">
<rich:treeNode .../>
</rich:treeNodesAdapter>
</rich:treeNodesAdapter>
</rich:tree>
新着:
<rich:tree ... var="node"> <!-- Add a 'var' attribute -->
<rich:treeModelAdapter>
<c:set var="vm_host" value="#{node}"/>
<rich:treeNode .../>
<rich:treeModelAdapter>
<c:set var="vm_guest" value="#{node}"/>
<rich:treeNode .../>
</rich:treeModelAdapter>
</rich:treeModelAdapter>
</rich:tree>
<ui:param>
の代わりに使用することもできます<c:set>
。
RichFaces が属性名のエラーチェックを拒否しているため、変換プロセスはさらに困難になっています。古い名前を引き続き使用できますが、機能しません。静かに。