8.5. <s:link> と <s:button> の使用


JSF コマンドリンクは常に JavaScript でフォームサブミットを行います。 これによりウェブブラウザの「新しいウィンドウで開く」または「新しいタブで開く」機能が動作しない問題が発生します。純粋な JSF でこの機能が必要な場合は、 <h:outputLink> を使用する必要があります。 ただし、 このメソッドには重要な制限が 2 つあります。
  • JSF にはアクションリスナーを <h:outputLink> につなげる方法は備わっていません。
  • また、実際のフォームサブミットがないため JSF は選択された DataModel の行を伝播しません。
Seam は ページアクション という概念で 1 番目の問題を解決しますが、 2 番目の問題は解決しません。 要求パラメータを渡しサーバー側で選択されたオブジェクトを再度クエリすることでこの問題に対処することは可能です。いくつかのケースでは (Seam ブログのサンプルアプリケーションなど) これが最善策となります。 これは RESTful でありサーバー側の状態を必要としないためブックマーク機能に対応します。ブックマークを必要としない他のケースでは @DataModel@DataModelSelection が透過的かつ便利です。
この機能を補ってさらに対話伝播をより簡略化するために、 Seam は <s:link> JSF タグを提供します。
このリンクは JSF ID だけ指定できます。
<s:link view="/login.xhtml" value="Login"/>
Copy to Clipboard Toggle word wrap
また、 アクションメソッドを指定することもできます。 この場合アクションの結果は最終的なページを確定します。
<s:link action="#{login.logout}" value="Logout"/>
Copy to Clipboard Toggle word wrap
JSF ビュー ID とアクションメソッドの両方を指定すると、 アクションメソッドが null 以外の結果を返さない限りそのビューが使用されます。
<s:link view="/loggedOut.xhtml"  action="#{login.logout}" value="Logout"/>
Copy to Clipboard Toggle word wrap
リンクは <h:dataTable> 内で使用する DataModel の選択された行を自動的に伝播します。
<s:link view="/hotel.xhtml" action="#{hotelSearch.selectHotel}" 
   value="#{hotel.name}"/>
Copy to Clipboard Toggle word wrap
既存の対話のスコープを残しておくことができます。
<s:link view="/main.xhtml" propagation="none"/>
Copy to Clipboard Toggle word wrap
対話を開始、 終了、 またはネストすることができます。
<s:link action="#{issueEditor.viewComment}" propagation="nest"/>
Copy to Clipboard Toggle word wrap
リンクが対話を開始すると、ページプローの使用を指定することができます。
<s:link action="#{documentEditor.getDocument}" propagation="begin" 
   pageflow="EditDocument"/>
Copy to Clipboard Toggle word wrap
以下のように taskInstance 属性は jBPM タスクリストで使用します。例は 「Seam と jBPM を使ったアプリケーションの全容 : DVD ストアサンプル」 を参照してください。
<s:link action="#{documentApproval.approveOrReject}" 
   taskInstance="#{task}"/>
Copy to Clipboard Toggle word wrap
最後に「リンク」をボタンとしてレンダリングさせたい場合は <s:button> を使用します。
<s:button action="#{login.logout}" value="Logout"/>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat