1
私は、次の概念に出くわしたときに、いくつかのポートレットのチュートリアルをチェックしていた:により分離されたアクションとレンダリングモデルにリクエスト属性がアクションからポートレットでのレンダリングに伝播されないのはなぜですか?
、アクション要求属性がに含まれているビューコンポーネントのいずれにも使用できません
public class DateTimePortlet extends GenericPortlet { public void doView(RenderRequest req, RenderResponse res) throws IOException, PortletException { Object actionAttribute = req.getAttribute("datetime"); res.getWriter().println("Date Time:" + (actionAttribute != null ? actionAttribute :"Unavailable")); res.getWriter().close(); } public void processAction(ActionRequest req, ActionResponse res) throws PortletException { req.setAttribute("datetime",new Date()); } }
そして、なぜこれが起こっている実際に私は理解していない....です:相(JSP、サーブレットなど)
と述べたコードは以下の通りであったレンダリングレンダリングメソッドは常にアクションメソッドの後に呼び出されませんか? ....彼らは同じ範囲で実行されますか?
ので、レンダリングや行動のそれぞれが異なる要求を持って、それが転送または派遣、同じ要求ではありませんか? –
Liferayは、MVCPortletクラスを介してポートレット仕様に便利な拡張を提供し、すべてのアクションパラメータをレンダリングパラメータとして直接コピーします。あなたは、あなたのportlet.xmlで以下のinit-のparamを設定することでこれを実現することができます ' コピーリクエストパラメータ 真 ' –
をレンダリングし、アクション要求は全く異なる要求と相です。詳細は、https://dev.liferay.com/develop/tutorials--/knowledge_base/6-1/understanding-the-two-phases-of-portlet-executionを参照してください。 – atrujillofalcon