新增门户卡片

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

新增门户卡片

一、卡片展示

portlet的前端展示需要利用的是JSP页面,自定义即可,示例如下

新建JSP:{HOME}:/server/deploy/portal.ear/plt_sp.war/WEB-INF/fragments/demo/helloWorld/HelloWorldPortlet_view.jsp

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%-- Uncomment below lines to add portlet taglibs to jsp
<%@ page import="javax.portlet.*"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects />
--%>
<b>
    VIEW MODE
</b>

此外,可以利用如下方式,从JSP向后台发送参数信息:

<form id="dataForm" class="KdAjaxForm" action="<portlet:actionURL windowState="normal" portletMode="view"></portlet:actionURL>">
<table>
     <tr>
     <td>
     //需要发送的参数名称与内容
     <input type="text" id="param" name="param" value='param'/>
     </td>     
         </tr>
<tr>
<td><button type="button" class="button"  ></button></td>
</tr>
 </table>
</form>

二、后台实现类


不做任务业务实现,仅用来将请求转发到相应的业务界面(即步骤1中新建的JSP页面),示例如下:

新增java类:

com.kingdee.portal.plt.sp.module.demo.portlet.HelloWorldPortlet需要继承 javax.portlet.GenericPortlet抽象类

有四个接口可供重写,分别用来进行请求转发与参数处理

1、请求转发接口

doView(RenderRequest request, RenderResponse response)
doEdit(RenderRequest request, RenderResponse response)
doHelp(RenderRequest request, RenderResponse response)


以上三个接口主要实现页面的转发,不做具体的业务处理,会将请求转到portlet卡片的前端界面

因此需要什么界面,就实现相应的接口即可,不需要全部重写,代码示例:


public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
response.setContentType("text/html");
       try {
String param="";
PortletPreferences pf = request.getPreferences();
           //获取portlet的所有参数信息
Map<String, String[]> preferencesMap = pf.getMap(); 
           
if (preferencesMap!=null){
if (preferencesMap.get("param")!=null){
param = preferencesMap.get("param")[0];
}
}
           //将参数发送至业务层,供其使用
request.setAttribute("param", param);
} catch (Exception e) {
request.setAttribute("error","error!");
}
       PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/fragments/demo/helloWorld/HelloWorldPortlet_view.jsp");
      //转发请求至前端(HelloWorldPortlet_view.jsp)
    dispatcher.include(request, response);
    
}
public void doEdit(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
response.setContentType("text/html");
    PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/fragments/demo/helloWorld/HelloWorldPortlet_edit.jsp");
    dispatcher.include(request, response);
}

2、参数处理接口

processAction(ActionRequest request, ActionResponse response)

接收前端请求所发送的业务参数,进行入库,持久化至表T_JP_PortletRuntimePreferences中

public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
String param=request.getParameter("param");
PortletPreferences preferences = request.getPreferences();
preferences.setValue("param", param);
    //持久化
preferences.store();
}

三、增加新卡片的信息配置

1、配置文件路径

{HOME}:\server\deploy\portal.ear\plt_sp.war\WEB-INF\portlet.xml

2、示例

<portlet>
<description xml:lang='en'>Hello World</description>
<description xml:lang='zh-CN'>测试示例</description>
<description xml:lang='zh-TW'>測試示例</description>
<portlet-name>HelloWorldPortlet</portlet-name>
<display-name xml:lang='en'>Hello World</display-name>
<display-name xml:lang='zh-CN'>测试示例</display-name>
<display-name xml:lang='zh-TW'>測試示例</display-name>
<portlet-class>
            com.kingdee.portal.plt.sp.module.demo.portlet.HelloWorldPortlet
      </portlet-class>
<init-param>
<name>portlet-icon</name>
<value>/res/img/plt_icons/HelloWorldPortlet.webp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
<portlet-mode>HELP</portlet-mode>
</supports>
<portlet-info>
<title>HelloWorldPortlet</title>
<short-title>HelloWorldPortlet</short-title>
<keywords>plt_sp,HelloWorldPortlet</keywords>
</portlet-info>
</portlet>

标签参数说明:

(1)portlet-name:卡片的唯一标识

(1) display-name:portlet卡片的显示名称

(2)  description :portlet卡片的描述信息

(3) portlet-class:卡片所对应的后台处理类(步骤二中新建的JAVA类)

(4) supports:portlet卡片所支持的模式

(5)  init-param:portlet卡片的自定义初始化参数

四、增加新卡片的初始化配置

1、配置文件路径

{HOME}:\server\deploy\portal.ear\plt_sp.war\WEB-INF\web.xml

2、示例

<servlet>
<servlet-name>HelloWorldPortlet_Servlet</servlet-name>
<servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>HelloWorldPortlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldPortlet_Servlet</servlet-name>
<url-pattern>/PlutoInvoker/HelloWorldPortlet</url-pattern>
</servlet-mapping>

标签参数说明:

(1)servlet-name:与servlet-mapping的参数servlet-name对应.

(2)load-on-startup:初始化时机,0为懒加载,1主服务启动进行加载.

(3)servlet-class:portlet卡片驱动类,路径

(4)url-pattern:servlet的映射路径,命名格式为/PlutoInvoker/{portlet-name}.


五、注册Portlet卡片

进入门户管理界面(administrator登录),Portlet管理 - 应用包管理

1、注册应用包

2、启用新加的portlet卡片

六、使用Portlet卡片

Portlet卡片成功注册后,可以在门户的任何页签下引入,以我的工作台为例,进行全局配置:

门户管理 - 首页菜单配置 - 首页 - 我的工作台

选择需要的卡片进行添加,最终点击完成即可

新增门户卡片

一、卡片展示portlet的前端展示需要利用的是JSP页面,自定义即可,示例如下新建JSP:{HOME}:/server/deploy/portal.ear/plt_sp.war/WEB-INF...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息