八、 Portlet Modes
portlet的modes用来指定访问的render方法,默认情况下portlet有三种modes,分别是view,edit,help,与其对应默认有三个调用方法,分别是doview,doedit,deohelp。一般情况下portal会对用户使用view,edit,help的权限做一些限制,比如可以让所有用户访问view,help modes,但是只有特殊权限的用户可以访问edit modes。
查看 Portlet Mode
view mode通过名字就可以理解,是用来portlet日常展现的modes,portlet必须具有此mode,portlet在view mode的时候后台访问的是doview方法。
编辑 Portlet Mode
一般来说edit mode用来设置用户的个性化设置,可以通过preferences来设置,一般来说不是所有用户都具备使用edit mode的权限。Edit是一个可选的modes。
帮助 Portlet Mode
Help mode是用来提供portlet的帮助信息的mode,help同样也是一个可选的mode
自定义 Portlet Modes
除了默认提供的三个mode,可以也可以自己来定义mode,比如ibm 的portal中就自己定义了两种mode(config、edit_defaults)。首先需要在portlet.xml进行定义
<custom-portlet-mode> <portlet-mode>config</portlet-mode> </custom-portlet-mode> <custom-portlet-mode> <portlet-mode>edit_defaults</portlet-mode> </custom-portlet-mode> |
之后要重写请求分发的doDispatch方法
protected void doDispatch(RenderRequest request, RenderResponse response) throws PortletException, IOException { if (!WindowState.MINIMIZED.equals(request.getWindowState())){ PortletMode mode = request.getPortletMode(); if (CUSTOM_CONFIG_MODE.equals(mode)) { doCustomConfigure(request, response); return; } else if (CUSTOM_EDIT_DEFAULTS_MODE.equals(mode)) { doCustomEditDefaults(request, response); return; } } super.doDispatch(request, response); } |
GenericPortlet Render Handling
可以通过@RenderMode这种方式来定义与view、edit、help mode对应的方法,但是笔者觉得没有什么必要,用默认的方法名称就成了。
受支持的 Portlet Modes
每个Portlet必须定义它们支持的mode类型,如下图
<supports> <mime-type>text/html</mime-type> <portlet-mode>view</portlet-mode> <portlet-mode>edit</portlet-mode> <portlet-mode>help</portlet-mode> <portlet-mode>config</portlet-mode> <portlet-mode>edit_defaults</portlet-mode> </supports> |