2011-01-28 8 views
1

javascriptを使用せずにh:commandLinkの動作を取得することはできますか?私はJSF2を使用していますJSF2:javascriptを使用しないcommandLink

ライトボックスコンポーネントを使用する場合は、事前に完全生成されたURLを取得する必要があります。私のURLがアクションに基づいている場合は、h:commandLinkしか使用できません。これは、マウスのクリック操作にバインドされたjavascriptを生成します。

JSFのナビゲーション機能を使用したいと思います(リンクを生成するためにaction="#{bean.action}"を使用してください)、完全に生成されたURLを取得する方法があります。あなたのアクションで

答えて

4

使用<h:outputLink>または<h:link>を助け

希望を望むようにあなたのURLを生成することができます。これにより、<h:form>を必要とせずにプレーンなHTML <a>要素が生成されます。アクションを呼び出すには、ロジックをBeanアクションメソッドからコンストラクタに移動するか、開いているビューに関連付けられているマネージドBeanの@PostConstructに移動する必要があります。

パラメータを渡す必要がある場合は、<f:param>を使用してクエリ文字列として追加します。 faces-config.xml<managed-property>(または既にJSF 2.0を使用している場合は@ManagedProperty)を使用して、これらのパラメータをBeanに設定できます。 @PostConstructメソッドでアクセスできます。

+0

'outputLink'では' action'属性を使用できません。この方法ではJSFナビゲーションを使用しません。 –

+0

私の答えの最初の文を超えて読んだことがありますか?とにかく、 ''を使って、ナビゲーションケースの結果値を直接取って変換することもできます。 – BalusC

+0

はい、私は読んだことがあります。私のコメントで私が意味することは、私が結果のものを使用しないということです。また、@Postconstructは使用できません(残念ながら)。マネージドBeanは異なるコンテキストで使用されるためです。しかし、チップ+1のおかげで –

0

あなたは要求をリダイレクトするには

try { 
    FacesUtils.redirect("yourUrl.jsf"); 
} 
catch (IOException e) { 
    Log.get().error(e); 
} 

を使用することができます。

はもちろん、あなたが、これは代わりに

+1

彼はすでに完全なURLをリンク内に入れたいと思っています。 – BalusC

+0

@BalusCあなたが正しい場合、は解決策です –

関連する問題