0

私はJSFを学ぼうとしています。

注釈 @ManagedBean @RequestScoped を持つ単純な Hello.java があります...

index.xhtml には次のものがあります。

<h:inputText id="username" 
             value="#{hello.name}"
             required="true"
             requiredMessage="A name is required.">
</h:inputText>
<h:commandButton id="submit" value="Submit" action="response">
</h:commandButton>

私の質問は、名前フィールドに入力せずに送信ボタンをクリックすると、エラーメッセージが表示されることです。しかし、ページを更新すると、エラー メッセージがまだ表示されます。消えないのはなぜ?どうすれば消えますか?

4

1 に答える 1

3

フォーム送信を更新しています。したがって、フォームが送信され、再度検証されます。少しまともなブラウザなら、「投稿データを再送信してもよろしいですか?」のような警告が表示されるはずです。これを見たことがありませんか?

いずれにせよ、これは同期 POST フォームでの完全に自然で標準的な HTML/Web ブラウザーの動作であるため、あなたが何を期待しているのかわかりません (したがって、この「問題」のコンテキストでは単なる HTML コードであるため、JSF とはまったく関係ありません)。ジェネレーター)、しかし、POST 要求の更新時に POST 要求を再実行することを避けたい場合、最も簡単な方法は、同期 POST 要求ではなく (ajax による) 非同期 POST 要求にすることです。これはネストの問題です

<f:ajax execute="@form" render="@form" />

の中に<h:commandButton>。ブラウザーの更新では、最後の同期要求のみが更新され、それが最初の GET 要求になります。

于 2013-02-24T11:46:04.580 に答える