0
  • 背景

ファイルのアップロード時にリッスンするアップロード方式のバッキングBeanを持っています。ここで、このファイルをパーサーに渡し、パーサーでcsvファイルに存在する行の検証チェックを実行しています。

検証に失敗した場合は、情報をログに記録し、データベースのログテーブルに保存する必要があります。

  • 私の最終目標

ロギングBeanでセッション情報を取得して、データベースにデータを保存するinitialContextための呼び出しを取得して呼び出すことができるようにすることです。ejb

  • 何が起こっているのか

アップロードバッキングBeanでセッションを取得していますが、パーサーを個別に単体テストするため、パーサーをセッションに依存させたくないため、パーサーを呼び出すときにセッション情報を渡しません。

したがって、私のパーサーには、sessionパーサーが呼び出している情報がありませんlogging bean(just a bean with some ejb methods)が、このロギングBeanでは、取得する必要があるため、セッションが必要ですinitial context

質問

  1. JSFには、自分の中にあるものをsession自分の中に入れる方法はありますか?logging beanupload backing bean

私はやってみました:

FacesContext ctx = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) ctx.getExternalContext().getSession(false);

しかし、session値はでしたnull、より一般的な質問は次のようになります:

  1. セッションがあるバッキングBeanから参照されるモデルBeanまたは他のBeanのセッション情報を取得するにはどうすればよいですか?
  2. JSFアプリケーション全体でセッション情報にアクセスできる一般的なメソッドがjsfにありますか?
4

1 に答える 1

0

それで、これを回避するために私がしたことは、

パラメータをクエリ文字列として保存xhtmlしましたstatus.xhtml

<h:link outcome="Log" value="${result.id}">
                <f:param name="jobid" value="${result.id}"/>
                <f:param name="userid" value="${result.userId}"/>
            </h:link>

今私の中log.xhtmlで、私は持っています

<f:metadata>
<f:viewParam name="jobid" value="#{bean.jobId}"/>
<f:viewParam name="userid" value="#{bean.userId}"/>
</f:metadata>

そして私のlog豆には、

public void init()
    {
        String userId1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("userid");
        String jobId1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("jobid");
        userId = Long.parseLong(userId1);
        jobId = Long.parseLong(jobId1);

    }

参考:Get パラメータの処理

于 2012-07-03T15:12:16.810 に答える