2011-08-05 4 views
1

私はMyFaces CODIを試しています。素晴らしい機能です。非常に便利なのはタイプセーフなナビゲーションです。コントローラービーンでアクションメソッドの結果を次のように指定することができます。JSF:MyFaces CODI型安全ナビゲーションとf:viewParam

public Class<? extends ViewConfig> goBack() { 
    return Pages.ListView.class; 
} 

これは、すべての開発IDEのリファクタリング能力が過度に高いため、実際にはクールです。

しかし、この機能を使用する場合、viewParameterを次のビューに渡す際に問題があります。

<h:commandButton id="backButton" value="#{msgs.Button_Back}" 
action="#{viewBean.goBack()}" /> 

私はこのコマンドボタンを使用する場合、私はパラメータを渡すことはできません。私はこのアクションメソッドを呼び出すためのコマンドボタンを使用する必要があります。 「ノーマル」ボタンまたはリンクはそれを行うだろう:

<h:button id="backButton" value="#{msgs.Button_Back}" outcome="siteBefore.xhtml"> 
    <f:param name="itemId" value="5" /> 
</h:button> 

欠点は、「通常」ボタンがアクションメソッドを使用していないので、私はCODIの型安全航行の利点に参加できないということです。

これらの2つの機能を組み合わせる可能性はありますか? (viewparamsを渡し、タイプセーフなナビゲーションを使用)

ありがとうございます!

答えて

0

@StevenR

型保証されたナビゲーションを使用しているときに、それは将来の機能のように思える彼らの問題追跡システムに従えばCODIしかし、viewParamsを含めることをサポートしていません:

https://issues.apache.org/jira/browse/EXTCDI-171

問題の歴史から、あなたは最近(〜4週間前に)ステータスを更新したばかりであることを伝えることができ、すぐに含まれる可能性があります。たぶんcomittersの1人がこの記事をフォローしていて、この新機能の大まかなタイムラインで私たちをアップデートできますか?

またタイプ安全運航の機能はJSF仕様で議論されました:私はCODIのwikiにヒントに従ってくださいことをお勧めしたいの回避策として

http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-977

(下記URLの一部を見ます)、Pages.ListView.class.getName()を使用して、バッキングBeanのアクションメソッド内で追加のviewParamsを連結することができます。このように、ナビゲーションはタイプセーフで、IDEのリファクタリング機能を活用できます。唯一のparamsが、私はあなたが<f:attribute/>タグを使うことをお勧めので、あなたはここに欠点が難しいです。この

String viewParam = ""; 
for (UIComponent comp : event.getComponent().getChildren()) { 
    if (comp instanceof UIParameter) { 
     UIParameter myParameter = (UIParameter) comp; 
    if (myParameter.getName().equals("myParameterName")) { 
     viewParam = myParameter.getValue()); 
    } 
} 
} 
// add your viewParam to the navigation string here 

のような谷を歩くことはありません

...こうしてタイプセーフではありませんあなたのコードの深いところでパラメータの名前をコード化します。だから、CODIが

cwiki.apache.org/EXTCDI/jsf-usage.html#JSFUsage-TypesafeNavigation

関連する問題