这里假设monsys为web服务的名称,其路径在webapps/下面   1,jetspeed的图片处理图片默认放在monsys/images下面,         调用方法:$clink.setURI("images/test.jpg")   2,javascript处理 javascript默认放在monsys/javascript下         调用方法:$clink.setURI("javascript/test.css")   3,portlets的位置位于monsys/WEB-INF/templates/vm/portlets/html下面   4,页面总体布局控制看JetspeedResources.properties    bottomnav.enable=true    bottomnav.vm=bottom.vm    leftnav.enable=true    leftnav.vm=left.vm    leftnav.width=10%    topnav.enable=true    topnav.vm=top.vm    topnav.logo.file=images/jetspeed-logo-1.5.gif    topnav.logo.url=    topnav.user_login.enable=true    topnav.user_creation.enable=true    topnav.my_pages.enable=true   5,portlets源代码分析: portlet主要实现三个方法:         <1>,buildMaximizedContext最大化         <2>,buildConfigureContext显示信息         <3>,buildNormalContext正常情况,也就是所看到的正常显示时所要显示的信息         <4>,调用时,在添加模块时添加新参数action=portlets.GraphDailyAction            package org.apache.jetspeed.modules.actions.portlets;            import .............(N个,略)            public class GraphDailyAction extends VelocityPortletAction {           /**            * Subclasses should override this method if they wish to            * build specific content when maximized. Default behavior is            * to do the same as normal content.            */              protected void buildMaximizedContext(VelocityPortlet portlet, Context context, RunData rundata) {                    buildNormalContext(portlet, context, rundata);                    String text = (String) context.get("text");                    if (text == null) {                         text = "Top Record of baccarat game";                    }                    context.put("text", text + " (Maximized !)");               }               /**                 * Subclasses should override this method if they wish to                 * provide their own customization behavior.                 * Default is to use Portal base customizer action                 */               protected void buildConfigureContext(VelocityPortlet portlet, Context context, RunData rundata) {                   buildNormalContext(portlet, context, rundata);                   setTemplate(rundata, "hello-customize");               }               /**                 * 这是主要部份                 * Subclasses must override this method to provide default behavior                 * for the portlet action                */               protected void buildNormalContext(VelocityPortlet portlet, Context context, RunData rundata) {                   String mode = portlet.getPortletConfig().getInitParameter("mode"); //读取添加模块时从配置文件传来的参数                   String searchdate = rundata.getParameters().getString("searchdate"); //取得从页面提交得到的参数                   context.put("mode", mode);                   context.put("searchdate", searchdate) //输出页面要显示的信息,支持输出数组,对像,及容器等形式的数据               }           }                   <5>写好源代码,并编译,参考里的:                   1,<3>所建的参数action,其值为portlets.GraphDailyAction,则系统会去执行这个类            
 
  |