6

これらの暗黙的なオブジェクトからの属性のフェッチの違いは何ですか:

renderRequest.getAttribute("myVar")
actionRequest.getAttribute("myVar")
request.getAttribute("myVar")

なぜそれらはすべて許可されているのですか?
通常、属性をactionRequestまたはrenderRequestオブジェクトに格納しますが、暗黙的なオブジェクトで取得できるrequestのはなぜですか?
正しいアプローチは何ですか?

ビュータイムでアクションオブジェクトを取得するにはどうすればよいですか?
action-render renderParams 受け渡しメカニズムに違反していませんか?
actionRequest/responseNullPointerExceptionを JSP で使用しようとしたときにスローされると、暗黙的なオブジェクトとして使用できるのはなぜですか?

PortalUtil.getOriginalServletRequest最後に、リクエスト ( )に属性を格納すると便利なのはいつですか?

4

1 に答える 1

7

リクエスト属性にアクセスするための正しいアプローチは何ですか? renderRequestポートレットでの正しいアプローチは、パラメーター値の取得と要求属性の取得または設定 (JSP またはポートレット クラス) のためだけに対話することです。renderResponse新しいポートレット URL を作成するために使用できます。

requestオブジェクトからもリクエスト属性を取得できるのはなぜですか? requestは でありHttpServletRequestrenderRequestですPortletRequest。ただし、Liferayは、たとえばリクエスト属性にアクセスするために、実際の で属性が見つからない場合ににフォールバックするような方法でrequestのラッパーとして実装されています。HttpServletRequestPortletRequestHttpServletRequest

actionRequestとの使用は何actionResponseですか? あなたが言うように、MVC の原則に従えば、ビュー ロジックにのみ JSP を使用します。Liferay から確認すると、ポートレットが適切なライフサイクルにある場合にのみ、これらすべてのオブジェクトが設定されていることDefineObjectsTagがわかります。通常、JSP ロジックを実行するときは RENDER_PHASE にいるため、null 以外になるだけです。xxxRequestxxxResponserenderRequestrenderResponse

に属性を格納すると便利な場合はrequest? HttpServletRequestポートレットで作業している場合 、属性を に格納することはあまり意味がありません。一方、サーブレット (フィルター) 内では、 を使用してポートレットから取得できる属性を追加できますrequest.getAttribute("xxx")

于 2012-09-07T13:21:43.380 に答える