2

(JSF 2で)会話のタイムアウトをキャッチしてユーザーを新しいページにリダイレクトする方法はありますか?会話がタイムアウトすると、厄介なNullPointerExceptionsが発生します。

すべてのNPEでユーザーをリダイレクトできましたが、それはネットが大きすぎるようです。

4

2 に答える 2

2

これは、CDIのRIであるWeld1.0.0のバグです。

https://jira.jboss.org/browse/WELD-550

これはWeldトランクで修正されたようですが、どのリリースで利用できるかわかりません。トランクではorg.jboss.weld.context.NonexistentConversationException、期限切れの会話にアクセスしようとすると、例外がスローされます。この例外はカスタムでトラップできExceptionHandler、ユーザーを適切なページにリダイレクトできます。カスタムの作成の詳細については、このブログを参照してくださいExceptionHandler

http://weblogs.java.net/blog/edburns/archive/2009/09/03/dealing-gracefully-viewexpiredexception-jsf2

于 2010-06-10T14:53:48.543 に答える
0

私は現在、CDI会話を扱っており、会話ベースのアプリを構築しようとしています。私はほとんどの問題を解決しました(そこに役立つチュートリアルがなければ簡単ではありません...)。多分私は助けることができます。

私の最初の問題は、Conversation-UseCaseの次のページに移動するときに、ビューをリダイレクトせず、cidをGETに追加しなかったことです。溶接フォーラムで関連する質問をしました。そこで、マネージド/ウェルドビーンで次のページにリダイレクトし、CIDをGETパラメーターとして追加する必要があることを学びました。そうして初めて、次のページでBeanの会話スコープの要素にアクセスできます。

したがって、会話の最初のページに入ると、ConversationScoped-Beanでstart-methodを(たとえば、commandLinkによって)呼び出しています。次のようになります。

public String startRegister() {
  if (conversation.isTransient)
    conversation.begin();
  return "register_start?faces-redirect=true&includeViewParams=true&cid=" + conversation.getId()
}

それはあなたの問題を解決しますか?また、StackOverflowで、会話を操作するときに処理する必要があるViewExpiredExceptionに関連する質問をしました-ここにあります

于 2010-06-09T22:29:07.127 に答える