1

JSF ページでは、ハンドル ファイルのアップロード イベントごとに、Bean の新しいインスタンスが作成されます。毎回新しいクライアントのようです。また、Web ブラウザーも別のクライアントのようです。

では、これらの FileUploadEvents が 1 つのブラウザのみから来て、1 つの Bean のみをインスタンス化する方法はありますか?

@ViewScoped JSF Bean の代わりに CDI を使用しようとしています。

index.xhtml:

<p:fileUpload fileUploadListener="#{bean.handleFileUpload}"/>

豆:

@Named
@ConversationScoped
public class Bean {

//code

@Inject
Conversation conversation;

public void HandleFileUpload(FileUploadEvent fileUploadEvent){
if(conversation.isTransient()){ //Always true :(
   conversation.begin(); 
}
//Beans get created each time it needs to access this method.

}
4

1 に答える 1

2

@ConversationScoped について誤解していました。

会話は、特定のリンクにアクセスする前に開始する必要があります。

会話が開始されていない状態でリンクにアクセスすると、Bean は @RequestScoped Bean と同様に動作することを意味します。したがって、@ConversationScopedに添付された 1 つのページを更新すると、毎回作成および破棄されます。

ソリューションは、リンクにアクセスする前に会話を開始するため、?cid=10が URL に含まれます。

于 2013-01-24T19:52:58.050 に答える