3

FacesContextに相当するものはありますが、サーブレット環境にありますか?

データベースへのトランザクションを処理する DAOSessionManager があります。現在のページが JSF を使用して記述されている場合、FacesContext を使用して現在の http リクエストを識別できますが、サーブレットの場合はどうでしょうか。

現在のサーブレット コンテキストまたは httpRequest を取得する方法が見つかりません...

ありがとう。

PS : はい、私の DAO レイヤーから FacesContext への参照を持つことは残念ですが、それが始まりです。

4

2 に答える 2

2

ですServletContextgetServletContext()継承されたメソッドにより、サーブレット クラス内で使用できます。

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    ServletContext context = getServletContext();
    // ...
}

との主な違いFacesContextはisn ではServletContextないThreadLocalため、現在のスレッドから「静的に」取得することはできませんFacesContext#getCurrentInstance()。必要に応じて、参照を DAO メソッドに渡す必要があります。ServletContext

someDAO.doSomething(getServletContext());

または、密結合を避けるために、そこから必要な情報を抽出して渡すだけです。

Object interestingData = getServletContext().getAttribute("interestingData");
someDAO.doSomething(interestingData);
于 2010-09-20T18:34:49.140 に答える
-1
ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
于 2012-12-18T10:29:07.357 に答える