Model view controller 最大化/最小化时不保留Portlet状态

Model view controller 最大化/最小化时不保留Portlet状态,model-view-controller,extjs4,portlet,liferay-6,Model View Controller,Extjs4,Portlet,Liferay 6,我正在使用Liferay 6和MVC Portlet。我使用jsp和extjs呈现Portlet。当我最大化/最小化时,portlet的当前状态将丢失。即使在最大化/最小化之后,我也希望保留portlet的状态。我怎样才能做到这一点 谢谢,Portlet有两个阶段:操作阶段和呈现阶段。当某些状态必须更改时(例如表单提交完成时),将运行操作阶段。渲染阶段将始终运行,也将在最大化/最小化之后运行。 如果您不希望在呈现阶段某些状态发生更改,请将此逻辑置于操作阶段 通过MVCPortlet,您有两种方法

我正在使用Liferay 6和MVC Portlet。我使用jsp和extjs呈现Portlet。当我最大化/最小化时,portlet的当前状态将丢失。即使在最大化/最小化之后,我也希望保留portlet的状态。我怎样才能做到这一点


谢谢,Portlet有两个阶段:操作阶段和呈现阶段。当某些状态必须更改时(例如表单提交完成时),将运行操作阶段。渲染阶段将始终运行,也将在最大化/最小化之后运行。 如果您不希望在呈现阶段某些状态发生更改,请将此逻辑置于操作阶段

通过MVCPortlet,您有两种方法来处理每个阶段:

public class MyLiferayTestPortlet extends MVCPortlet {
    @Override
    public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException {
        System.out.println("action");
        //here you can change the state
    }

    @Override
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
        System.out.println("rendering");
        //here you can prepaire the rendering of jsp

        //print the window state
        ThemeDisplay td = (ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
        System.out.println("isStateMaximized: " + td.isStateMaximized());
    }
}
在这里,您可以了解portlet的两个阶段: