2016-11-26 6 views
2

私のjsfページから「飛行機を削除したい」場合、飛行機が削除され、飛行機が正常に削除されたことをユーザーに伝える警告を表示してページにリダイレクトします。しかし、ユーザがh:inputTextに入力した値はまだそこにあり、空ではありません。入力フィールドは送信後に空になりません。

JSFページ:

<h:form> 
    <h:panelGrid columns="3" class="table"> 
     <h:outputLabel value="Plane ID" /> 
     <h:inputText value="#{listAirplaneBB.airPlaneId}"/> 
     <h:commandButton value="Delete" 
      class="btn btn-primary" 
      action="#{addAirplaneCtrl.deleteAirplane}" /> 
    </h:panelGrid> 
</h:form> 

豆コード:

public String deleteAirplane(){ 
    //delete the plane 
    return private/user?faces-redirect=true; 
} 

フィールドは、リダイレクト後に空いけない理由は上の任意のアイデア?

答えて

2

多分あなたのlistAirplaneBBは@ViewScoped Beanです(あなたの例では言えません)。
この場合、リダイレクトする前に特定のフィールドを手動で消去する必要があります。これは、JSFがターゲットページが変更されていない間もそのBeanを保持し続けるためです。

+0

はい、** @ ViewScoped ** Beanです。 ** @ RequestScoped **に変更するか、マニュアルリセットを実装する必要がありますか?どちらを選ぶべきですか?バックエンドの部分から飛行機のリストを取得するために使用するBean- – Carlton

+0

ページの内容がAjax処理を必要とするかどうかは、それが依存するかどうかは言うまでもありません。その場合、おそらく** ViewScoped **にとどまる必要があります。一方、あなたの投稿のそのフォームコンテンツが、そのページで期待される唯一のコンテンツであれば、** RequestScoped **に行くことになります。そのように設定するのはもっと自然なことです。希望が役立ちます。 –

+0

ここに、その違いの詳細を少し説明した投稿へのリンクがあります - http://stackoverflow.com/questions/6025998/difference-between-view-and-request-scope-in​​-managed-beans –

関連する問題