关于portlet编程的思考

来源:互联网 发布:正规合法vpn软件 编辑:程序博客网 时间:2024/05/16 05:08

环境:

 

在portlet编程中,portlet与相应的jsp页面是一对一的关系。也就是说,一个页面对应于一个portlet类,可是如果我实现页面与portlet类的多次交互功能,并且每次交互产生一个新的窗口(新的jsp页面),并要求显示不同条件所对应的不同的jsp页面,似乎很难实现。而且,在portlet.xml配置文件中,部分代码如下:

 <init-param>

   <name>ViewPage</name>

   <value>/WEB-INF/view/report/reportView.jsp</value>

 </init-param>

只能初始化一对键值参数。 这个似乎有点难解决!!

 

需要解决的问题:

 

要实现以上需要解决portelt与jsp页面的对应关系,即jsp产生事件后,需要将事件传递给portlet类处理。这其中,需要解决url的问题(url是jetspeed自动生成的)。可以通过以下代码:提前获知url

 PortletURL actionURL = renderResponse.createActionURL();

 actionURL.toString();

 

输出html的内容控制:

 

问题已经解决了,原来涉及到portlet页面跳转相应的代码与相关输出内容的代码的位置决定的。

(更深入一些,所有的jsp页面的调用,全部是调用的jsp所对应的class文件,通过println输出的html代码。除了在后台调用的是指定的某个jsp页面,浏览器显示的内容并不一定是某个指定的jsp中的内容,有可能是两个或多个的组合。在后台,一次性输出什么内容,前台就一次性显示什么内容,并没有严格意义上的独立的jsp/html页面)。

在doView()中:有这样的一段代码,如下

//跳转到指定页面并输出jsp页面内的内容

 

PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/view/report/reportProxy.jsp");

// 同步将request、response传到下级视图

rd.include(renderRequest, renderResponse);

//输出内容到浏览器

reportMng.html(nodeIdx, date, department, printWriter, actionURL);

配置文件中的配置为:默认情况下的设置。

 

(代码顺序决定输出顺序)