8

同じページにフォームを送信してGETパラメーターを使用するにはどうすればよいですか?

JSFページの内容:

<f:metadata>
    <f:viewParam name="item1" value="#{bean.item1}"/>
    <f:viewParam name="item2" value="#{bean.item2}"/>
</f:metadata>

...

<h:form>
  <h:inputText value="#{bean.item1}"/>
  <h:inputText value="#{bean.item2}"/>

  <h:button value="Submit" >
      <f:param name="item1" value="#{bean.item1}"/>
      <f:param name="item2" value="#{bean.item2}"/>
  </h:button>
</h:form>

ページform.jsf?item1 = foo&item2 = barをリクエストすると、テキストフィールドに入力されますが、フォームの送信自体が機能していないようです。

4

2 に答える 2

15

<h:button>で置き換えます

<h:commandButton value="Submit" action="form?faces-redirect=true&amp;includeViewParams=true"/>

<f:viewParam>クエリ文字列にパラメーターを含める PRG (Post-Redirect-Get) を効果的に起動します。ターゲット ページにはまったく同じ<f:viewParam>.

<form>もう 1 つの解決策は、の代わりにプレーンな HTML を使用し<h:form>、入力要素にid一致するパラメーター名を付けて、プレーンな を使用することです<input type="submit">。もちろん、ここでプレーンな HTML を使用することもでき<input type="text">ます。

<form>
    <h:inputText id="item1" value="#{bean.item1}"/>
    <h:inputText id="item2" value="#{bean.item2}"/>

    <input type="submit" value="Submit" />
</form>

<f:viewParam>を両側に保持する必要があります。変換/検証はこのフォームでは実行できず<f:viewParam>、ターゲット ページで を介して実行する必要があることに注意してください。

以下も参照してください。

于 2011-01-27T23:46:11.277 に答える
0

NavigationHandler「self」などのキーワードを処理し、現在のビューにリダイレクトして必要なクエリ パラメータを追加する を登録することもできます。

于 2013-03-26T22:20:24.953 に答える