关于portlet编程的思考

本文详细探讨了portlet与jsp页面的一对一对应关系,以及如何实现页面与portlet类之间的多次交互,包括事件触发时的页面跳转和输出控制。通过展示portlet页面跳转和html内容输出的代码实现,文章进一步阐述了jsp页面调用与后台处理的关系,揭示了在portlet环境中,输出内容与jsp页面调用位置之间的密切联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:

 

在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);

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值