杀千刀的PortletPreferences

这几天忙的像个鬼一样,好久没有更新blogs了,今天遇到了一个问题想骂娘,所以写出来希望大家遇到这样的问题有点帮助,开发portlet一般init.jsp一般都有:
PortletPreferences prefs = renderRequest.getPreferences();

String portletResource = ParamUtil.getString(request, "portletResource");


if (Validator.isNotNull(portletResource)) {
prefs = PortletPreferencesFactoryUtil.getPortletSetup(request, portletResource, true, true);
}
然后在view.jsp和configuration.jsp中都include这个init.jsp,在配置页面打开后修改了配置,然后在ConfigurationAction中处理,processAction中
PortletPreferences prefs =
PortletPreferencesFactoryUtil.getPortletSetup(
req, portletResource, true, true);或者在renderAction中res.getPreferences()也可以得到,偶遇到的问题就是,同样的init.jsp在配置页和view取得值居然不一样,而且各不相干,好像是两个portlet一样,以前也写了不少,没有出现过这样的问题,仔细查了Portletpreferences的类型,取得的方法,对了又对也没发现问题出在那里,然后又到了数据库找到了这几条数据,果然他们取得是两个不同的数据,不停的找,郁闷啊,一下午过去了,后来终于发现portletResource这什值,居然是"",无语了,死活也想不明白为什么在view的时候这个值是空,这个值也没有看到liferay是在那里放到request中去的,本身现在对lifery 整个的运行机制也不是很清,没办法啊,为了解决问题后来只好在init.jsp中取的方法也改成portletResource = portletDisplay.getId();就可以了,虽然解决了问题,可是心理还是不爽,问题的根本原因还是没有找到.


开发lifery这个东西,有时候不能太相信自已,我就遇到过,比如说清一下缓存,重启一下服务,登陆和注销后再看一下(PortalUtil.getPortletGroupId(request))这个方法有时候在登陆状态和注销状态取得的值都是不一样的,照道理同一个portlet不应该会出现这样的问题,所以说遇到这样的问题郁闷啊.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值