2016-08-08 3 views
0

ページにコマンドリンクを作成します。同じコマンドリンクは、ウェブサイトの別のページで使用されることがあります。ページAにフォームがないため、最初に作成されたとき。ページに既にフォームがあり、jsfの内部フォームを使用していないか確認できます。

シナリオ1

ページA(ページ上のno形式)

  • いくつかのテキスト
  • リンクが必要です。したがって、フォームに囲まれたコマンドリンクを作成します。

シナリオ2

ページB(ページB上のページAからのcommandLinkを再利用)

<h:form> 
    Some text 
    Need a link. So, create command link surrounded by a form. 

    Reuse commandlink component from PageA 
</h:form> 

エラー、内側フォーム例外をスロー。

  1. URLの問題のためにh:linkは使用できません。
  2. フォームの問題を避けるためにcommandLinkではなくh:outputLinkを使用できますか?
  3. カスタムjsfコンポーネントを作成してcommandLinkを作成できますか?ページにフォームが存在するかどうかを確認します。はいの場合は、フォームを追加しないでください。いいえの場合は、commandLinkの周りにフォームを追加します。

答えて

3

通常、h:formタグをJSFコンポーネントに入れないでください。 h:formタグは、コンポーネント自体ではなく、使用しているページのコンポーネントをラップする必要があります。そうすれば、同じフォームで他のコンポーネントと混在させることができます。さらに2行のコード行を必要とせず、柔軟性を提供します。すべてのパブリックコンポーネントライブラリでこれがどのように行われているかは、Primefaces as an exampleを見てください。

それ以外は、h:commandLinkがサーバーにPOSTリクエストを送信することを覚えておいてください。あなたはプレーンなリンクについて話しているようです。一般に、h:commandLinkは、ビューのレンダリング時に宛先URLがわからない場合に使用されます。 JSFの宛先にはまだh:link、外部の宛先にはh:outputLinkがあるので、他のケースでの使用を避けることをお勧めします。プレーンなHTMLアンカー要素を使用することもできます。そして、間違いなく、GETリクエストを発射するにはh:formタグは必要ありません。

も参照してください:

関連する問題